У меня есть объект типа заказа, который может иметь несколько пакетов отгрузки.Я использую спящий режим (5.2.10).Я хотел бы иметь однонаправленное отношение один ко многим между ними, поскольку объект пакета отгрузки не обязательно должен иметь ссылку на объект Заказа.Это работает, пока я не выполню только операцию чтения.Но если я хочу добавить новую отправку к заказу, она не удалась.
Database tables :
t_order(order_id,..)
t_package(id, fk_order_id, package_id, tracking_no, create_date)
@Entity
@Table(name = "t_order")
public class Order implements Serializable {
.
.
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "fk_order_id")
@OrderBy("id")
private Set<ShippingPackage> shippingPackages;
.
.
}
@Table(name = "t_package")
public class ShippingPackage implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "package_id")
private Long packageId;
@Column(name = "tracking_no")
private String trackingNo;
..
@Column(name = "create_date")
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Date createDate;
.
}
//service layer code
Order order = orderService.findByOrderNumber(orderNo);
order.getShippingPackages().add(new ShippingPackage(..));
Hibernate:
insert
into
t_package_dispatch
(create_date, package_id, tracking_no)
values
(?, ?, ?)
Exception - java.sql.SQLException: Field 'fk_order_id' doesn't have a default value
Как решить эту проблему?