org.hibernate.PropertyValueException:notnull属性在hibernate 5.4.5.Final中引用带有@One-to-Many联接表的null或瞬态值

org.hibernate.PropertyValueException:notnull属性在hibernate 5.4.5.Final中引用带有@One-to-Many联接表的null或瞬态值,hibernate,Hibernate,我有3个类,它们与联接表共享一对多——多对一的关系。 以下是映射 HardwarePackage.java @OneToMany(fetch = FetchType.LAZY) @JoinTable(name = "HDWR_PKG_DVC_XREF", joinColumns = { @JoinColumn(name = "HDWR_PKG_ID") }, inverseJoinColumns = { @JoinColumn(name = "DVC_ID") }) private Set<

我有3个类,它们与联接表共享一对多——多对一的关系。 以下是映射

HardwarePackage.java

@OneToMany(fetch = FetchType.LAZY)
@JoinTable(name = "HDWR_PKG_DVC_XREF", joinColumns = { @JoinColumn(name = "HDWR_PKG_ID") }, inverseJoinColumns = { @JoinColumn(name = "DVC_ID") })
private Set<Device> devices;
硬件PackageDevicexref.java

@Id
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "DVC_ID")
private Device device;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "HDWR_PKG_ID")
private HardwarePackage hardwarePackage;
当我试图保存Device.java对象而不创建HardwarePackage.java对象时,我得到一个错误

javax.persistence.PersistenceException:org.hibernate.PropertyValueException:notnull属性引用空值或瞬时值:com.deere.isg.dm.domain.commserv.Device.hardwarePackage

这在hibernate 5.0.3.Final版本中运行得很好,似乎他们在5.0.5.Final中做了一些更改,但不确定更改的内容和原因。

找到了原因

必须设置一个属性以避免检查可空性

<prop key="hibernate.check_nullability">false</prop>
false
虽然不确定为什么两个版本的默认值不同

<prop key="hibernate.check_nullability">false</prop>