Criteria和HQL不构造相同的查询

时间:2017-02-27 16:14:45

标签: hibernate hql criteria hibernate-criteria

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

标准:

Criteria cr = session.createCriteria(InventoryLocationAsset.class);
result = cr.list();

工作正常,但结果重复

HQL:

Query query = session.createQuery("FROM InventoryLocationAsset");
result = query.list();

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

标准:

Criteria cr = session.createCriteria(InventoryLocationAsset.class);
cr.fetchMode("asset", FetchMode.JOIN);
result = cr.list();

工作正常,但结果重复

HQL:

Query query = session.createQuery("FROM InventoryLocationAsset _ILA JOIN FETCH _ILA.asset");
result = query.list();

工作正常!! (没有重复的元素)

1 个答案:

答案 0 :(得分:0)

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

Query query = session.createQuery("FROM InventoryLocationAsset");
result = query.list();

将成为:

Query query = session.createQuery("FROM " + InventoryLocationAsset.class.getName());
result = query.list();

通过这种方式,你可以把你班上的所有路径都放在一边。

关于重复的行:

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