java - 没有连接的连接列的休眠选择ID
问题描述
问题是我需要从数据库中选择一个内部有一个连接列的对象,并且我需要那个外来对象的 ID。但是休眠会加入这两个表,或者如果处于惰性模式,它会再次查询我的数据库。除了主选择查询之外,如何在没有其他联接或查询的情况下访问该 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 值而触发新查询。
推荐阅读
- amazon-web-services - 在本地使用 AWS X-Ray 调用 AWS Lambda
- php - Php Slugfiy 函数返回值在 2 个服务器中不同
- keras - 我想为分类定制 VGG 19 架构的最后一层。keras 和 pytorch 哪个更有用?
- sql - 在 Access 中同步 SQL Server 元数据?
- python - 我正在使用python 2.7。我尝试了所有方法来设置 xlrd 文件,但我仍然收到错误:ImportError: No module named xlrd >>>
- c++ - 为什么返回具有引用类型的局部变量在 VS2012 中有效
- r - 在 R 中按时间和组获取第一个唯一值
- regex - 基于 URL 和查询字符串的 Htaccess 重定向
- javascript - 重构 firebase 函数 index.ts 代码,以便可以导入触发器
- c# - 实体框架正在参数化我的查询以利用缓存