Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 JPA&x2B;Hibernate-如何获取子实体的FK而不获取该实体?_Java_Hibernate_Jpa - Fatal编程技术网

Java JPA&x2B;Hibernate-如何获取子实体的FK而不获取该实体?

Java JPA&x2B;Hibernate-如何获取子实体的FK而不获取该实体?,java,hibernate,jpa,Java,Hibernate,Jpa,我的问题可能的答案如下: 然而,更好的解决方案(属性访问)在我的情况下不起作用(我得到了缺少列的异常-为什么?) 该模型如下所示:实体父对象和子对象。表parent有一列child\u id,它是child表的PK,因此它是典型的@manytone关系 现在的问题是,如果我获取父实体实体,我需要在不获取子实体的情况下访问FK值(即子实体的PK)。我该怎么做 我使用注释,我的映射如下所示: @Entity @Table(name = "parent") public class Parent e

我的问题可能的答案如下:

然而,更好的解决方案(属性访问)在我的情况下不起作用(我得到了缺少列的异常-为什么?)

该模型如下所示:实体
父对象
子对象
。表
parent
有一列
child\u id
,它是
child
表的
PK
,因此它是典型的
@manytone
关系

现在的问题是,如果我获取
父实体
实体,我需要在不获取
子实体的情况下访问
FK
值(即
子实体的
PK
)。我该怎么做

我使用
注释
,我的映射如下所示:

@Entity
@Table(name = "parent")
public class Parent extends AbstractEntity {

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "patent_id", nullable = true)
private Child child;

@Column(name="child_id",insertable=false,updatable=false)
private Integer childId;

public Child getChild() {
    return patent;
}

public void setChild(Child child) {
    this.child = child;
}


public Integer getChildId(){
    return childId;
}
}
我要做的是调用
parent.getChild().getId()
,而不从数据库中额外获取
Child
实体

根据我上面提到的答案,如果我将注释从字段移动到getter(在
Parent
entity我说得对吗?),请求的行为将是开箱即用的。然而,当我将注释移动到getter时,我会得到一个验证异常,即
child
列丢失(奇怪的是,为什么
child
不是
child\u id
声明?)


PS:显示了将
FK
列声明为单独字段的变通方法,效果很好,但我认为这不是应该采用的方法。

阅读以下文章后,确定
我已经意识到,属性访问应该是我想要获取的属性,而不是实际的
子对象。因此,将
id
AbstractEntity
的访问权从字段更改为属性就可以了。

我认为,在执行延迟加载时,hibernate甚至不会获取该列。因此,如果您希望在不获取数据的情况下显示,您应该使用本机查询。我使用
criteriaapi
Try@Formula annotation并键入所需内容,这不是一个选项。可能有用。不tested@dinesh707这不是JPA annotationorg.hibernate.annotations.Formula;