Hibernate选择没有连接的连接列的ID

时间:2018-09-24 09:27:38

标签: java hibernate jpa

问题是我需要从数据库中选择一个内部具有连接列的对象,并且需要该外部对象的ID。但是hibernate会连接这两个表,或者如果处于惰性模式,它将在我的数据库上再次查询。 除了主选择查询之外,如何在没有其他联接或查询的情况下访问该ID。

请注意,我正在使用Hibernate版本+5,并且我希望通过JPA CriteriaBuilder来使用此方法。

谢谢。

1 个答案:

答案 0 :(得分:3)

在这种情况下,您可以将外键映射到实体两次,一次用于实际的ORM,另一次用于获取FK,而无需实际触发新查询。

public class Answer {
   @JoinColumn(name = "question_id")
   @ManyToOne(targetEntity = Question.class, fetch = FetchType.LAZY)
   private Question question;

   @Column(name = "question_id", insertable = false, updatable = false)
   private Long questionId;
}

question_id表中存在answer

这样,外键将在第一个查询的结果中(在questionId字段中)已经可用,并且不会为获取FK值而触发新查询。