当前位置: 首页 > 面试题库 >

在hibernate中,如何处理查询参数为空或为空?

单于钊
2023-03-14
问题内容

我正在使用JPA,hibernate3。

String sqlQuery = " FROM TraceEntityVO  where lotNumber =:lotNumber and mfrLocId=:mfrLocId and mfrDate=:mfrDate and qtyInitial=:qtyInitial and expDate=:expDate";
Query query = entityManager.createQuery(sqlQuery)
                .setParameter("lotNumber", traceEntityVO.getLotNumber())
                .setParameter("mfrLocId", traceEntityVO.getMfrLocId())
                .setParameter("mfrDate", traceEntityVO.getMfrDate())
                .setParameter("qtyInitial", traceEntityVO.getQtyInitial())
                .setParameter("expDate", traceEntityVO.getExpDate());

当没有空值或空值时,此查询就像一个超级按钮。但是
traceEntityVO.getLotNumber(),traceEntityVO.getMfrLocId(),traceEntityVO.getExpDate()的

值可能为null或为空

在这种情况下,将针对变量而不是 null 条件来检查值’null’或’‘ 。当我不确定参数值是否为null或为空时,该如何处理?

我不想基于空或null的值动态构造查询。

这可能吗?

提前致谢..


问题答案:

我认为,如果没有动态查询,您真的无法做到这一点。

但是,使用条件API(hibernate)(JPA)来构建这样的查询很容易,您认为呢?



 类似资料:
  • 问题内容: 我有一个实体: 我在说。这是我的DAO方法: 日志说: 请求处理失败;嵌套的异常是java.lang.NullPointerException 并将指针放在这一行: 有时必须为null。那么如何设置null? 问题答案: 如果您查看Query类的文档,setInteger()方法, 它以名称和 原始类型int 作为参数。 当您在 自动装箱 期间传递值为null的包装器类型Integer

  • 我是JPA新手,这里是我的一个查询,我有几个参数作为查询的一部分,任何参数都可以是空值

  • 我使用从我的mysql数据库添加节点到。 我的问题是记录中的某些列值可能为null。我如何在cypher查询中处理它们,因为对于mysql表中的null值,它没有创建任何节点。 下面是我使用neo4j java驱动程序创建节点的代码 在neo4j浏览器控制台中,当我在cypher下面运行查询时,没有形成任何节点。 更新:我能够在Java处理空值。但是对于另一张桌子,我有一些奇怪的行为。 在Neo4

  • 问题内容: 由于数据库表中的值为空,我得到“ org.hibernate.PropertyAccessException” 。如何处理异常? 我的档案是 FetchTest.java FetchTest.java Employee.java hibernate.cfg.xml employee.hbm.xml When I ran this application I am getting bel

  • 我刚刚意识到,当任何参数为null时,JPQL where子句都不能像我预期的那样工作。例如,这个简单的JPQL查询 当参数为null时不返回任何结果,即使数据库中存在名称设置为null的实体。 在这种情况下,Hibernate使用WHERE实体执行SQL。名称=空。显然,这不是由数据库处理的,因为对于空比较,标准定义为NULL(请参见SQL is NULL and=NULL)。JPQL还有一个

  • 问题内容: 给出以下HQL查询: 我使用Query对象的方法进行设置。 我想使用对象进行设置,但是在查看Hibernate文档和方法列表时,我看不出要使用哪种明显的选择。有任何想法吗? 问题答案: 使用,的Javadoc在这里。 有四种变体可供选择。