【问题标题】:Hibernate select id of join column without join没有连接的连接列的休眠选择ID
【发布时间】:2018-09-24 20:34:41
【问题描述】:

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

请注意,我使用的是 Hibernate 版本 +5,我希望通过 JPA CriteriaBuilder 获得一种方法。

提前谢谢你。

【问题讨论】:

  • 你不能这样做,哈哈
  • 为什么不将课程和您尝试过的内容以及生成的 SQL 一起发布?

标签: java hibernate jpa


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 2012-06-11
    • 1970-01-01
    • 2016-07-15
    • 2011-01-05
    相关资源
    最近更新 更多