忽略休眠本机查询中的空列表

我有一个查询

 String query = "Select * 
                   from brand brd 
                   join product prd on brd.prd_id = prd.id
                   join price prc on prc.id = prd.prc_id";

 if(!bo.brd.isEmpty() || !bo.prd.isEmpty())
 query.append(" where " );
 if(!bo.brd.isEmpty()) && !bo.prd.isEmpty())
 query.append(brd.id in (:brdId) and prd.id in (:prdId));
 else if(!bo.brd.isEmpty())
 query.append(brd.id in (:brdId)) ;
 else if(!bo.prd.isEmpty())
 query.append( prd.id in (:prdId));

 query.createNativeQuery(query)
 .setParameterList("brdId",brdLst)
 .setParameterList("prdId",prdLst)
 .getResultList();

所有参数都是可选的。我正在使用休眠本机查询,并使用setParameterlist设置所有参数。当列表为空或无法找到该参数时,我正在获取brdId或prdId。如何动态更改查询参数?

a786782040 回答:忽略休眠本机查询中的空列表

整个事情应该像下面

String query = "Select * 
               from brand brd 
               join product prd on brd.prd_id = prd.id
               join price prc on prc.id = prd.prc_id";
if(!bo.brd.isEmpty() || !bo.prd.isEmpty())
  query.append(" where " );
if(!bo.brd.isEmpty()) && !bo.prd.isEmpty())
  query.append(brd.id in (:brdId) and prd.id in (:prdId));
else if(!bo.brd.isEmpty())
  query.append(brd.id in (:brdId)) ;
else if(!bo.prd.isEmpty())
   query.append( prd.id in (:prdId));

if(!bo.brd.isEmpty()) && !bo.prd.isEmpty())
  query.createNativeQuery(query).setParameterList("brdId",brdLst).setParameterList("prdId",prdLst);
else if(!bo.brd.isEmpty())
  query.createNativeQuery(query).setParameterList("brdId",brdLst)
else if(!bo.prd.isEmpty())
  query.createNativeQuery(query).setParameterList("prdId",prdLst)

是的,'query'是String,它没有休眠方法。

本文链接:https://www.f2er.com/3105701.html

大家都在问