org.hibernate.PropertyValueException:not-null属性在Hibernate 5.4.5.Final中使用@一对多连接表引用null或瞬时值

时间:2019-09-20 16:40:52

标签: 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<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中有所更改。最终但不确定是什么,为什么。

1 个答案:

答案 0 :(得分:0)

找到原因。

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

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

尽管不确定为什么两个版本的默认设置不同。