hibernate - 使用和/或在标准中时出现 NullPointerException

标签 hibernate grails criteria

我如何使用 createCriteria 方法在 Grails 应用程序中获取数据的一个非常简化的示例:

    def c = SomeClassOfMine.createCriteria()
    def projects = c.list(max: limit, offset: start) {
        eq("userId", userId)
        if (owner != null && owner.size() > 0) {
            ilike("ownerName", owner + "%")
        }
        if (someParameter && someParameter.size() > 0) {
            or {
                ne("validated", 1)
                ne("validated2", 1)
            }
        }
        order("name", "asc")
    }

在线有或 { 我得到 NullPointerException 没有消息。我尝试了各种组合并密切关注各个地方给出的示例,结果发现如果我尝试使用 会遇到同样的问题和 也。我知道还有其他方法可以获取数据,但我非常想使用这种方法。我没能弄清楚我自己可能出了什么问题...在 上的此类代码块中可能导致 NullPointerException 的原因是什么?或 / ?

如果我知道在这种情况下什么是相关的,我会提供更多信息。

编辑:在代码示例中添加了一个 if 子句(检查所有者的位置)。

我调查了更多,发现问题出在if (owner != null && owner.size() > 0) {。更具体地说,变量名 owner .当我将名称更改为其他名称时,问题就消失了。如果有人能解释为什么会发生这种情况,那将是非常有趣的。

最佳答案

问题是“所有者”是 Groovy 中的保留字。这在 Groovy Closures 中有描述。 .
您可以尝试在“所有者”周围放置单引号,以便您的代码行显示为:

if ('owner' != null && 'owner'.size() > 0) {



可能工作。您最好的选择是使用新的变量名以避免任何混淆。

关于hibernate - 使用和/或在标准中时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7240109/

相关文章:

spring - 您能否在 Grails 中对复合 id 进行数据绑定(bind),使其(或其中的一部分)变得可更新?

java - @SuppressWarnings ("unchecked") 在 dao 类中

java - 如何将 from-subquery 转换为 Hibernate Criteria 语句

spring - 如何在没有 'distinct' : Select Distinct(x) From x Left Join y Where y. attr = true 的情况下执行此操作

java - Hibernate - 避免 LazyInitializationException - 从代理和 session 中分离对象

java - 使用 hibernate 将所有记录从主表复制到克隆表

json - json响应末尾出现意外 token }

grails - Grails 2升级问题

unit-testing - grails-测试delete()

java - JPA 2 case 语句允许构造函数查询中为 null