我正在使用Hibernate 5 Criteria Builder Queries来获取Criteria Queries。但是,当调用session.get()时,SQL在调用它们时会为相关的Hibernate实体创建多个查询。有没有一种方法可以像Hibernate Criteria Query Fetching那样通过一个查询来获取它们。
CriteriaQuery<AdvanceRecieved> advanceCriteria = builder.createQuery(AdvanceRecieved.class);
Root<AdvanceRecieved> advanceRoot = advanceCriteria.from(AdvanceRecieved.class);
advanceRoot.fetch(AdvanceRecieved_.department,JoinType.LEFT);
我使用fetch()提取了这些实体,但是我没有在下面的代码示例中找到用于提取的示例。
ItemsABS selectedItem = jpaSess.get(ItemsABS.class, dealer.id);
Set<Tax> itemtaxes = selectedItem.getTaxEligibility();
最佳答案
您正在看到多个查询,因为ItemsABS
和TAX
实体之间可能存在一对多关系。因此,当您请求ItemsABS
数据时,默认情况下它将获取附加的引用(即TAX
数据),因此会为此触发多个查询。
如果只需要ItemsABS
数据,则在获取LAZY LOADING
数据时可能必须使用ItemsABS
。
可以使用@OneToMany(fetch = FetchType.LAZY)
在实体级别定义