我在grails 2.1.1中得到了一个奇怪的NullPointerException。

HibernateCriteriaBuilder crit = FattoriIndicatori.createCriteria()
crit.createAlias("indicatori","ind")... // NPE here, because underlying Criteria is null
  • 该类在hibernate-cfg中列出
  • 来自同一配置文件的其他类也可以正常工作
  • 该类不是最近添加的,很久以来就存在

  • 当然有什么丢失,但我看不到。

    编辑:我确信该类已正确配置,因为此代码有效:
    HibernateCriteriaBuilder crit = FattoriIndicatori.createCriteria()
    Number res = crit.get {
    projections {
        count()
        }
    }
    

    最佳答案

    问题在于,只有从传递给HibernateCriteriaBuilderget等的闭包内调用时,list上的某些方法才有效。

    HibernateCriteriaBuilder crit = FattoriIndicatori.createCriteria()
    def results = crit.list {
      createAlias("indicatori","ind")
      eq('ind.something', 'value')
    }
    

    会很好的工作。 list方法进行一些初始化(包括创建基础的Criteria实例,该实例最初是null),然后调用闭包以建立条件规范,然后执行结果查询并返回结果。

    09-11 18:40