我有模型对象,例如订单,可以有多个货运包裹。我正在使用休眠(5.2.10)。我希望它们之间具有一对多的单向关系,因为装运包装对象不必具有Order对象的引用。在我仅执行读取操作之前,此方法一直有效。但是,如果我希望将新货添加到订单中,它将失败。
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
如何解决此问题?