Grails无法获得财产' id'在null对象上

时间:2014-11-20 11:49:49

标签: grails

我收到此错误:无法获取财产' id'在null对象上,我无法理解这个问题。

这是我在provionController.groovy

中的代码

CreateCriteria返回一个元素,我在数据库中验证了size = 1但是当我试图显示Id时,我收到了这个错误。

def prov_model = null
def model = Provision_model.CreateCriteria{
  gilt_air{
      eq("air",air)
  }
  gilt_coo{
      eq("coo",coo)
  }
  le("date_from", per.begin)
  ge("date_to", per.end)
  eq("active", 1)

}
println(model.size())
prov_model = model[0]
println(prov_model.id)

但是当我通过方法get()直接获取它时,它没有问题

prov_model = Provision_model.get(57)
println(prov_model.id)

3 个答案:

答案 0 :(得分:4)

1st:该方法称为createCriteria(),而不是CreateCriteria()

第二:方法本身不调用任何数据库操作。您必须在其上调用list()get()等来获取查询结果

答案 1 :(得分:0)

如果要执行查询并将结果存储在model中,请替换此

def model = Provision_model.CreateCriteria

def model = Provision_model.withCriteria

答案 2 :(得分:0)

@injecteer和@Donal都有非常有效的输入。首先,您需要解决语法问题,以下是格式化标准的一种方法示例:

def prov_model = null
def model = Provision_model.createCriteria().get() {
    gilt_air{
      eq("air",air)
  }
  gilt_coo{
      eq("coo",coo)
  }
  le("date_from", per.begin)
  ge("date_to", per.end)
  eq("active", 1)
}

请注意,通过使用.get(),您将限制从条件返回到一条记录。其次,如果您尝试双向编写标准,使用withCriteria并使用上述格式并且仍然无法正常工作,那么您的问题可能出在域模型或数据库配置中。