Hibernate 条件和HQL不构造相同的查询

Hibernate 条件和HQL不构造相同的查询,hibernate,hql,criteria,hibernate-criteria,Hibernate,Hql,Criteria,Hibernate Criteria,我对此有意见,但我不知道会发生什么。我的查询有错误吗?为什么返回不同的查询 标准: Criteria cr = session.createCriteria(InventoryLocationAsset.class); result = cr.list(); Criteria cr = session.createCriteria(InventoryLocationAsset.class); cr.fetchMode("asset", FetchMode.JOIN); result = cr.

我对此有意见,但我不知道会发生什么。我的查询有错误吗?为什么返回不同的查询

标准:

Criteria cr = session.createCriteria(InventoryLocationAsset.class);
result = cr.list();
Criteria cr = session.createCriteria(InventoryLocationAsset.class);
cr.fetchMode("asset", FetchMode.JOIN);
result = cr.list();
工作正常,但结果重复

HQL:

线程“main”org.hibernate.ObjectNotFoundException中的异常:不存在具有给定标识符的行


标准:

Criteria cr = session.createCriteria(InventoryLocationAsset.class);
result = cr.list();
Criteria cr = session.createCriteria(InventoryLocationAsset.class);
cr.fetchMode("asset", FetchMode.JOIN);
result = cr.list();
工作正常,但结果重复

HQL:


很好!!(没有重复的元素)

您的错误出现在第一个HQL查询中:

Query query = session.createQuery("FROM InventoryLocationAsset");
result = query.list();
将成为:

Query query = session.createQuery("FROM " + InventoryLocationAsset.class.getName());
result = query.list();
通过这种方式,您将放置类的所有路径

关于重复的行:

您的
InventoryLocationAsset
是其他资产的基类吗?如果是,请检查您的
polimorphism
属性是否已设置(必须是
显式的