休眠选择连接列的 id 没有连接

A.S*_*eri 5 java hibernate jpa

问题是我需要从数据库中选择一个内部有连接列的对象,我需要该外部对象的 Id。但是休眠连接这两个表,或者如果处于惰性模式,它会再次查询我的数据库。如何在没有其他连接或查询的情况下访问该 Id,而不是主选择查询。

请注意,我使用的是 Hibernate 版本 +5,并且我想要一种通过JPA CriteriaBuilder.

先感谢您。

Obi*_*Jha 12

在这种情况下,您可以将外键映射到实体两次,一次用于实际 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;
}
Run Code Online (Sandbox Code Playgroud)

question_id是存在于answer表中。

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