我有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;
Device.java
@OneToOne(fetch = FetchType.LAZY)
@JoinTable(name = "HDWR_PKG_DVC_XREF", joinColumns = { @JoinColumn(name = "DVC_ID") }, inverseJoinColumns = { @JoinColumn(name = "HDWR_PKG_ID") })
private HardwarePackage hardwarePackage;
HardwarePackageDeviceXREF.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;
当我尝试不创建HardwarePackage.java对象而保存Device.java对象时,出现错误,
javax.persistence.PersistenceException:org.hibernate.PropertyValueException:not-null属性引用的是null或瞬时值:com.deere.isg.dm.domain.commserv.Device.hardwarePackage
这以前在休眠版本5.0.3中正常工作,最终版本似乎在5.0.5中有所更改。最终但不确定是什么,为什么。
答案 0 :(得分:0)
找到原因。
必须设置一个属性以避免检查可空性,
<prop key="hibernate.check_nullability">false</prop>
尽管不确定为什么两个版本的默认设置不同。