【问题标题】:java.lang.illegalargumentexception no query defined for that name [...]java.lang.illegalargumentexception 没有为该名称定义查询 [...]
【发布时间】:2020-02-15 05:51:08
【问题描述】:

我在 plsql 中有一个这样的原生查询;

create or replace package body DBPK_Monitoring is
  PROCEDURE monitoring_Search(cur OUT SYS_REFCURSOR,) is
    query       VARCHAR(30000);
    whereClause VARCHAR(10000);

  BEGIN
    whereClause := whereClause || '  and   ( cnt.contract_status!=7)';

    query := ' select itemTitle as "itemTitle", numberOfRow as "numberOfRow" ,
               orderNumber as "orderNumber",createDate as "createDate",
               priorityNumber as  "priorityNumber"  
        from buy_buy_order bbo
       inner join buy_buy_order_item bbi
          on bbi.buy_order_id = bbo.id
        left outer join core_User_Role shoUserRole
          on shoUserRole.id = bbi.buy_Expert_Id      

         ' || whereClause || ' order by ' || orderBy ||
             ') e  WHERE e.rowNO>  ' || lower_Bound || ' and e.rowNO<=' ||
             upper_Bound;
    OPEN cur FOR query
  end monitoring_Search;

end DBPK_Monitoring;

我在带有 hql 的存储库中使用这个查询,如下所示:

 Session session = getSession();
        Query query = session.getNamedQuery("monitoring_Search").setResultTransformer(Transformers.aliasToBean(MonitoringDto.class));
        int firstResultIndex = searchOption.getPageNumber() * searchOption.getPageSize();
        query.setInteger("lower_Bound", firstResultIndex);
        query.setParameter("upper_Bound", firstResultIndex + searchOption.getPageSize());
        query.setString("orderBy", searchOption.getOrder());
        query.setParameter("buyOrderNumber", buyOrderNumber);        
        List<MonitoringDto> list = query.list();
        int count = (list.size() > 0L) ? list.get(0).getNumberOfRow() : 0;
        return new QueryResult<MonitoringDto>(searchOption.getPageNumber(), count, searchOption.getPageSize(), list);

当我运行程序时,我得到这个错误:

java.lang.illegalargumentexception 没有为该名称定义查询 [监控搜索]

我该如何解决这个问题?

【问题讨论】:

  • 您是否在实体 MonitoringDto 类之上定义了命名查询。
  • 没有。你能解释一下吗?
  • monitoring_Search 不是 Hibernate 命名查询。它是一个包中的存储过程。为了能够将其用作命名查询,您需要对其进行定义。查看 Hibernate 文档如何做到这一点。

标签: java hibernate plsql hql illegalargumentexception


【解决方案1】:

您必须将 monitoring_search 定义为 Hibernate 命名查询,您可以在此链接中查看有关此内容的详细信息:https://www.baeldung.com/hibernate-named-query 祝你有美好的一天,亲吻你周围的人;)

【讨论】:

  • 我爱你。 Rafti o haji haji make:D;)
猜你喜欢
  • 1970-01-01
  • 2021-03-07
  • 1970-01-01
  • 2015-01-23
  • 1970-01-01
  • 1970-01-01
  • 2015-05-02
  • 2020-01-17
  • 1970-01-01
相关资源
最近更新 更多