有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JPA+Hibernate如何在不获取子实体的情况下获取子实体的FK?

我的问题可能的答案如下: How can I retrieve the foreign key from a JPA ManyToOne mapping without hitting the target table?

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

模型如下所示:实体ParentChild。表parentchild_id列,它是child表的PK,所以它是典型的@ManyToOne关系

现在的重点是,如果我获取Parent实体,我需要在不获取Child实体的情况下访问FK值(也称PK)。我该怎么做

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

@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实体中,对吗?),请求的行为将是开箱即用的。然而,当我将注释移动到getter时,我会得到一个child列丢失的验证异常(奇怪的是,为什么child不是声明的child_id?)

PS:显示了将FK列声明为单独字段的变通方法,可以很好地工作,但我不认为应该这样做


共 (1) 个答案