引用列不会保存在单向一对多关系休眠中

时间:2019-02-09 09:49:06

标签: java hibernate

我有模型对象,例如订单,可以有多个货运包裹。我正在使用休眠(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

如何解决此问题?

0 个答案:

没有答案