Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OneTONE映射在选择父实体时未获取子实体_Java_Hibernate_Hibernate Mapping_One To One - Fatal编程技术网

Java OneTONE映射在选择父实体时未获取子实体

Java OneTONE映射在选择父实体时未获取子实体,java,hibernate,hibernate-mapping,one-to-one,Java,Hibernate,Hibernate Mapping,One To One,2个具有OneTONE双向映射的表,其中父表中的列是唯一的,而不是主表,子表中映射的列是主表。 能够在子表中保存数据,但在尝试获取父实体时 子实体为空 参考代码 母公司: @Column(name="REFERENCE_NO",unique = true) private Long referenceNo; @OneToOne(fetch = FetchType.LAZY, mappedBy="parentObj", cascade = CascadeType.ALL) private

2个具有OneTONE双向映射的表,其中父表中的列是唯一的,而不是主表,子表中映射的列是主表。 能够在子表中保存数据,但在尝试获取父实体时 子实体为空

参考代码

母公司:

@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;

您应该更改提取类型

@OneToOne(fetch = FetchType.EAGER)

另一个选项是,当您想要访问子对象时,调用父对象上的getter。

如果您设置了
fetch=FetchType.LAZY
,则childEntity为null,因为您已将映射设置为
fetch=FetchType.EAGER
。我想你可以删除
fetch=FetchType.LAZY
,如果没有必要的话。你使用的是什么hibernate版本?@vincenzopalazzo我试过删除“LAZY”这个问题,FetchType.EAGER也不起作用。@SternK我使用的是5.1.0。Final@RajanSharma如果未加载property
childEntity
,则表示变量不在数据库中,正确的?你能在数据库里找到它吗?如果变量不存在,则应为
childEntity
分配一个值,如
parentObj.setChild(childEntity)