Java 有没有办法使用Hibernate会话.get()获取查询?

Java 有没有办法使用Hibernate会话.get()获取查询?,java,hibernate,fetch,Java,Hibernate,Fetch,我正在使用Hibernate 5 Criteria Builder查询和Criteria查询获取。但是在调用session.get()SQL时,在调用它们时为相关的Hibernate实体创建多个查询。是否有一种方法可以通过一个查询作为Hibernate条件查询获取它们 CriteriaQuery<AdvanceRecieved> advanceCriteria = builder.createQuery(AdvanceRecieved.class); Root<AdvanceR

我正在使用Hibernate 5 Criteria Builder查询和Criteria查询获取。但是在调用session.get()SQL时,在调用它们时为相关的Hibernate实体创建多个查询。是否有一种方法可以通过一个查询作为Hibernate条件查询获取它们

CriteriaQuery<AdvanceRecieved> advanceCriteria = builder.createQuery(AdvanceRecieved.class);
Root<AdvanceRecieved> advanceRoot = advanceCriteria.from(AdvanceRecieved.class);

advanceRoot.fetch(AdvanceRecieved_.department,JoinType.LEFT);
CriteriaQuery-advanceCriteria=builder.createQuery(AdvanceRecieved.class);
根advanceRoot=advanceCriteria.from(AdvanceRecieved.class);
fetch(AdvanceReceived_uu.department,JoinType.LEFT);
我使用fetch(),获取了这些实体,但在下面的代码示例中找不到用于获取的示例

ItemsABS selectedItem = jpaSess.get(ItemsABS.class, dealer.id);
Set<Tax> itemtaxes = selectedItem.getTaxEligibility();
ItemsABS selectedItem=jpaSess.get(ItemsABS.class,dealer.id);
Set itemtaxs=selectedItem.gettaxqualification();

您会看到多个查询,因为您可能在
项目B
税务
实体之间存在一对多关系。因此,当您请求
ItemsABS
数据时,默认情况下它会获取附加的引用(即
TAX
数据),因此会为此触发多个查询

如果您只需要
ItemsABS
数据,那么在获取
ItemsABS
的数据时,可能必须使用
延迟加载

这可以使用
@OneToMany(fetch=FetchType.LAZY)

在实体级别定义,谢谢您的回复。有没有一种方法可以通过一个查询来获取它们,而不必通过另一个查询来获取get
Tax
数据,比如fetchjoin?我认为不会使用criteria或HQL。您可能可以使用本机SQL查询实现这一点,而无需将其与实体进行映射(这需要显式地使用RowMapper实现)。