java - 忽略 hibernate native 查询中的空列表

标签 java hibernate jpa

我有一个疑问

 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();

所有参数都是可选的。我正在使用 hibernate native 查询并使用 setParameterlist 设置所有参数。当列表为空或无法找到参数时,我会收到 brdId not found 或 prdId not found 。如何动态更改查询参数?

最佳答案

整个事情应该像下面这样

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)

是的,“查询”是字符串,它不会有 hibernate 方法。

关于java - 忽略 hibernate native 查询中的空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58848362/

相关文章:

java - 使用 MySql Springdata 和 Hibernate 的大写和小写问题

java - 无法打开 JPA EntityManager 进行事务。 JTA EntityManager 无法使用 getTransaction()

java - 无法将 'java.lang.String' 的值转换为所需类型 'myEnum'

java - 嵌入式 H2 + Tomcat 7 JDBC 领域 + Hibernate = "Locked by another process"

java - JPA 继承与 JOINED 策略

java - 保留文本文件中收到的数据

java - 如何根据用户位置邻近度自定义 Mapbox 自动完成搜索结果?

java - 专门针对 double 和浮点精度的 java 类

java - 带有 Java 实现的 SOAP WS (JAX-WS) : I receive null parameters because of the namespace qualified

java - 返回类型之前的通用方法java 6 <T>