首页 > 解决方案 > 没有连接的连接列的休眠选择ID

问题描述

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

请注意,我使用的是 Hibernate 版本 +5,我希望通过JPA CriteriaBuilder.

先感谢您。

标签: javahibernatejpa

解决方案


在这种情况下,您可以将外键映射到实体两次,一次用于实际 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 值而触发新查询。


推荐阅读