Hibernate级联在保存时引发异常

Hibernate级联在保存时引发异常,hibernate,jpa-2.0,one-to-many,hibernate-mapping,cascade,Hibernate,Jpa 2.0,One To Many,Hibernate Mapping,Cascade,我正试图在数据库中插入一个对象。它包含一个也应该插入的集合,但我得到以下异常: SQLServerException: Cannot insert the value NULL into column 'ID_CUSTOMER', table 'dbo.CUSTOMER_ADDRESS'; column does not allow nulls. INSERT fails. 映射如下: CustomerDB.java @OneToMany(fetch = FetchType.LAZY, map

我正试图在数据库中插入一个对象。它包含一个也应该插入的集合,但我得到以下异常:

SQLServerException: Cannot insert the value NULL into column 'ID_CUSTOMER', table 'dbo.CUSTOMER_ADDRESS'; column does not allow nulls. INSERT fails.
映射如下:

CustomerDB.java

@OneToMany(fetch = FetchType.LAZY, mappedBy = "customer", orphanRemoval = true, cascade = CascadeType.ALL)
private List<CustomerAddressDB> addresses;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.REFRESH)
@JoinColumn(name = "ID_CUSTOMER", nullable = false, updatable=false, insertable=false)
private CustomerDB customer;
因此,当我调用CustomerDB实体的persist方法时,我可以看到正在执行的HQL:

Hibernate: insert into M2M_CUSTOMER (NM_COMPANY_NAME, DT_CREATED, ID_PARENT, ID_LAYER, DS_OBS, DS_SHORT_NAME, ID_CUSTOMER_STATUS, NM_TRADING_NAME) values (?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: insert into M2M_CUSTOMER_ADDRESS (DS_CITY, DS_COUNTRY, NR_NUMBER, NR_POSTAL_CODE, DS_STATE, DS_STREET, ID_ADDRESS_TYPE) values (?, ?, ?, ?, ?, ?, ?)
但在此之后,将抛出前面提到的异常。我不明白为什么它会说CUSTOMER_ID为空,因为客户是在地址之前插入的。是否存在映射错误


谢谢

您告诉Hibernate不应该插入或更新地址实体中的客户,因此Hibernate不会插入它。替换

@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.REFRESH)
@JoinColumn(name = "ID_CUSTOMER", nullable = false, updatable=false, insertable=false)
private CustomerDB customer;


您在客户的“id”字段中有哪些注释?
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.REFRESH)
@JoinColumn(name = "ID_CUSTOMER", nullable = false)
private CustomerDB customer;