问题是我需要从数据库中选择一个内部具有连接列的对象,并且需要该外部对象的ID。但是hibernate会连接这两个表,或者如果处于惰性模式,它将在我的数据库上再次查询。 除了主选择查询之外,如何在没有其他联接或查询的情况下访问该ID。
请注意,我正在使用Hibernate版本+5,并且我希望通过JPA
CriteriaBuilder
来使用此方法。
谢谢。
答案 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值而触发新查询。