java - Hibernate select id of join column without join

标签 java hibernate jpa

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

请注意,我使用的是 Hibernate +5 版本,并且我想要通过 JPA CriteriaBuilder 的方法。

提前谢谢你。

最佳答案

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

关于java - Hibernate select id of join column without join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52476273/

相关文章:

java - 回家后应用程序不会存储状态

java - 尝试运行 Sagan spring.io 项目 java.lang.IllegalAccessError 时出错

java - org.springframework.transaction.annotation.Transactional 与 javax.jdo.annotations.Transactional

java - 如何使用 Java 创建 CaffeineCache 对象?

java - JTA 与 PersistenceUnit

hibernate - 在Querydsl中选择Long类型变量

java - org.hibernate.loader.MultipleBagFetchException : cannot simultaneously fetch multiple bags

java - 未使用 hibernate 序列ID生成器

java - 使用 persistence.xml 的 JPA 的数据库连接位于哪里?

testing - 使用 JPA 在我的 CRUD 桌面应用程序上模拟 4,000 次选择