【发布时间】:2019-12-29 10:49:50
【问题描述】:
具有 OneToONEe 双向映射的 2 个表,其中父表中的列是唯一的而不是主要的,而子表中映射的列是主要的。 能够将数据保存在子表中,但是在尝试获取父实体时 子实体以 null 的形式出现
参考代码
父实体:
@Column(name="REFERENCE_NO",unique = true)
private Long referenceNo;
@OneToOne(fetch = FetchType.LAZY, mappedBy="parentObj", cascade = CascadeType.ALL)
private ChildEntity childEntity ;
子实体:
@Id
@Column(name="REFERENCE_NO")
Long referenceNo;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name="REFERENCE_NO",referencedColumnName = "REFERENCE_NO")
private ParentEntity parentObj;
【问题讨论】:
-
如果您设置了
fetch = FetchType.EAGER,则您的childEntity 为null,因为您已将fetch = FetchType.LAZY设置为映射。如果没有必要,我认为您可以删除fetch = FetchType.LAZY。 -
你用的是什么休眠版本?
-
@vincenzopalazzo 我尝试删除“LAZY”同样的问题,FetchType.EAGER 也不起作用。
-
@SternK 我正在使用
5.1.0.Final -
@RajanSharma 如果没有加载适当的
childEntity,则变量不在数据库中,对吗?您可以尝试在数据库中找到它吗?如果该变量不存在,则应为childEntity分配一个值,例如parentObj.setChild(childEntity);
标签: java hibernate hibernate-mapping one-to-one