Java JPA&x2B;Hibernate:CriteriaQuery未加载渴望的多工单关系
我在创建标准查询加载多通关系时遇到了一些问题,没有 显式地告诉它,复制实体注释似乎很奇怪 在执行此操作的查询中:Java JPA&x2B;Hibernate:CriteriaQuery未加载渴望的多工单关系,java,hibernate,jpa-2.0,Java,Hibernate,Jpa 2.0,我在创建标准查询加载多通关系时遇到了一些问题,没有 显式地告诉它,复制实体注释似乎很奇怪 在执行此操作的查询中: 我有一个使用JPA+Hibernate的应用程序(Hibernate-JPA-2.0-api) 除其他字段外,“我的实体计算机”包含以下关系: @manytone(fetch=FetchType.EAGER) @JoinColumn(name=“employee”,nullable=false) 私人雇员=空 据我所知,当我加载一个计算机实体时,与它相关的员工应该自动加载到同一个查
- 我有一个使用JPA+Hibernate的应用程序(Hibernate-JPA-2.0-api)
- 除其他字段外,“我的实体计算机”包含以下关系: @manytone(fetch=FetchType.EAGER) @JoinColumn(name=“employee”,nullable=false) 私人雇员=空
- 据我所知,当我加载一个计算机实体时,与它相关的员工应该自动加载到同一个查询中,但如果使用标准查询加载一台计算机,它就不会这样工作。也就是说,当我创建javax.persistence.criteria.CriteriaQuery并执行它时,我可以
请参见两个不同的查询:
- 一个人去拿电脑
- 另一个用于获取Employee(甚至在我使用它之前..也就是说,它似乎正在加载此实体,因为有急切的注释)
感谢FetchType.EAGER意味着链接实体必须与根实体同时被获取,但jpa规范没有说明执行此操作的策略(即,使用一个或两个查询是持久性提供程序实现的选择)
Hibernate提供注释
@Fetch(FetchMode.JOIN)
,该注释指示Hibernate通过一个查询获取两个实体,因此您可以使用该注释来实现所需的功能(但它不是标准的JPA注释)我已经对此进行了测试,但不起作用。我现在再试了一次,但即使删除了另一个fetch值,它也不起作用。也许这与使用“entityManager.getCriteriaBuilder()”在构建查询时忽略该注释有关…但在后面的步骤中考虑它们。。。