【发布时间】:2013-10-07 07:19:15
【问题描述】:
我在使 CriteriaQuery 加载 ManyToOne 关系时遇到了一些麻烦 明确地告诉它,复制我的实体注释似乎很奇怪 在查询中使这项工作:
我有一个使用 JPA + Hibernate (hibernate-jpa-2.0-api)的应用程序
-
我的实体计算机,除了其他字段包含关系:
@ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "employee", nullable = false) 私人雇员雇员 = null;
-
据我所知,当我加载一个 Computer 实体时,与之相关的 Employee 应该会自动加载到同一个查询中,但是,如果加载一个 计算机使用CriteriaQuery,它不能那样工作。也就是说,当我创建一个 javax.persistence.criteria.CriteriaQuery 并执行它时,我可以 查看两个不同的查询:
- 一个获取计算机
- 另一个来获取 Employee(甚至在我使用它之前......也就是说,由于急切的注释,它似乎正在加载这个实体)
在我看来,这应该在同一个查询中完成,但不知道该怎么做才能完成这项工作。如果我将 ".fetch("employee")" 添加到 criteriaquery 中,它可以工作,但这样我会在查询中复制实体中的配置,并且从从维护的角度来看,这不是解决办法。
这种行为正常吗?可以修改吗?
谢谢
【问题讨论】: