我收到此错误:无法获取财产' 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)
答案 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并使用上述格式并且仍然无法正常工作,那么您的问题可能出在域模型或数据库配置中。