【问题标题】:Criteria and HQL do not construct the same queryCriteria 和 HQL 不构造相同的查询
【发布时间】:2017-07-18 08:22:42
【问题描述】:

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

标准:

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

工作正常,但结果重复

HQL:

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

线程“主”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();

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

【问题讨论】:

    标签: hibernate hql criteria hibernate-criteria


    【解决方案1】:

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

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

    会变成:

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

    通过这种方式,您将放置类的所有路径。

    关于重复行:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多