Java Spring Data App 不保存子对象
Java Spring Data App doesn't save sub-objects
我正在尝试构建构建服务,该服务使用子对象保存对象,但出现错误。结果对象数据字段已保存,但子对象未保存。
我有下一个对象。主对象为订单,子对象为合作伙伴:
@Getter
@Setter
@Entity
@Table(name = "orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "order_id")
private int orderId;
@OneToMany(mappedBy = "order", fetch = FetchType.EAGER,
cascade = CascadeType.ALL)
private Set<Partner> partners;
}
@Getter
@Setter
@Entity
@Table(name = "partners")
public class Partner implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "partner_id")
private int id;
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "order_id", nullable = false)
private Order order;
}
我使用来自 Spring Jpa 存储库的标准嵌入式方法“保存”:
@Repository
public interface OrdersRepository extends JpaRepository<Order, Integer> {
}
和调用此存储库的服务:
@服务
public class OrdersServiceImpl 实现 OrdersService {
@Autowired
private OrdersRepository repository;
@Override
public Order save(Order order) {
return repository.save(order);
}
}
有人知道为什么没有保存合作伙伴吗?
非常感谢!
因为关系拥有者是合作伙伴,所以您需要先保存订单。或者您可以将 cascade = CascadeType.PERSIST 放在 private Order order;
我正在尝试构建构建服务,该服务使用子对象保存对象,但出现错误。结果对象数据字段已保存,但子对象未保存。
我有下一个对象。主对象为订单,子对象为合作伙伴:
@Getter
@Setter
@Entity
@Table(name = "orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "order_id")
private int orderId;
@OneToMany(mappedBy = "order", fetch = FetchType.EAGER,
cascade = CascadeType.ALL)
private Set<Partner> partners;
}
@Getter
@Setter
@Entity
@Table(name = "partners")
public class Partner implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "partner_id")
private int id;
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "order_id", nullable = false)
private Order order;
}
我使用来自 Spring Jpa 存储库的标准嵌入式方法“保存”:
@Repository
public interface OrdersRepository extends JpaRepository<Order, Integer> {
}
和调用此存储库的服务:
@服务 public class OrdersServiceImpl 实现 OrdersService {
@Autowired
private OrdersRepository repository;
@Override
public Order save(Order order) {
return repository.save(order);
}
}
有人知道为什么没有保存合作伙伴吗?
非常感谢!
因为关系拥有者是合作伙伴,所以您需要先保存订单。或者您可以将 cascade = CascadeType.PERSIST 放在 private Order order;