我正在创建一个带有Person实体的基本CRUD应用程序:
class Person {
public int Age;
...
public int getAge() {
return this.Age;
}
public void setAge(int AgeToSet) {
this.Age = AgeToSet;
}
}
我有一个控制器,我想要检索所有年龄为20岁的人:
def filter = {
def c = Person.createCriteria();
def persons = c.list{
eqProperty("Age", "20");
}
[persons: persons];
}
但这不起作用,而是给我错误:
ERROR StackTrace - Full Stack Trace:
org.hibernate.QueryException: could not resolve property: Age of: project.Person
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:62)
可能是什么问题?
答案 0 :(得分:1)
三件事:
Age
需要以小写字母开头:age
。eq
。 eqProperty
比较两个属性,但您只需要一个属性和值。int
相符,如下所示:eq("myage", 20)
。答案 1 :(得分:1)
由于此查询非常简单,您可能只想使用DynamicFinder:http://gorm.grails.org/6.0.x/hibernate/manual/index.html#finders
使用动态查找器,您可以将查询简化为:
def persons = Person.findAllByAge(20)
只是一个建议。我使用动态查找器作为我的主要查询方法。如果我需要一个更复杂的查询,我将使用.createCriteria
,然后使用.executeQuery
来获取HQL。