我遇到了一些麻烦,使CriteriaQuery中负载多对一的关系,而不 明确告诉它,它似乎很奇怪有查询复制我的实体注释 到使这项工作:JPA + Hibernate的:CriteriaQuery中不加载急于多对一关系
我使用JPA +休眠(Hibernate的相关JPA-2.0-API)
我的实体的COM应用程序帕特,除了其它字段包含关系:
@ManyToOne(取= FetchType.EAGER) @JoinColumn(名称= “雇员”,可为空=假) 私人雇员雇员= NULL;
据我知道,当我打开一个计算机实体,该员工有关,应该在同一个查询自动加载,但是,如果用CriteriaQuery中加载计算机,它不这样工作。也就是说,当我创建一个javax.persistence.criteria.CriteriaQuery并执行它,我可以 看到两个不同的查询:
- 一个来获取计算机
- 另一个去取员工(即使以前我用it..that是,它似乎是由于装载的渴望诠释这个实体)
从我的角度来看,这应该在相同的查询中完成,但不知道如何做这项工作。如果我将“.fetch(”employee“)”添加到标准查询它可以工作,但这样我就在我的查询中复制实体中的配置,并且从维护的角度来看,这是不是解决方案。
这种行为是否正常?它可以被修改吗?
感谢
我已经测试了这一点,没有工作。我现在再试一次,但即使删除了其他提取值,也不起作用。也许这与使用“entityManager.getCriteriaBuilder()”有关,在构建查询时忽略这些注释......但在后面的步骤中考虑它们... – sschz