org.hibernate.PropertyValueException:notnull属性在hibernate 5.4.5.Final中引用带有@One-to-Many联接表的null或瞬态值
我有3个类,它们与联接表共享一对多——多对一的关系。 以下是映射 HardwarePackage.javaorg.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<
@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>