【发布时间】:2015-07-01 17:39:32
【问题描述】:
我想查询给定列表中具有子对象的所有对象。
class Parent {
Child child
static namedQueries = {
getParentsByListOfChildren { childList ->
'in'('child', childList.collect {it.id})
}
}
}
class Child {
}
def listOfChildren = [child1, child2] // child1 and child2 are instances of Child
def results = Parent.getParentsByListOfChildren(listOfChildren)
我在集成测试中遇到以下异常:
property.BasicPropertyAccessor HHH000122: IllegalArgumentException in class: com.me.Parent, getter method of property: id
| Failure: getParentsByListOfChildren correctly filters trains (com.me.ParentIntegrationSpec)
| org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of com.me.parent.id
at org.grails.datastore.gorm.GormStaticApi.withCriteria_closure11(GormStaticApi.groovy:304)
at org.grails.datastore.mapping.core.DatastoreUtils.execute(DatastoreUtils.java:302)
at org.grails.datastore.gorm.AbstractDatastoreApi.execute(AbstractDatastoreApi.groovy:37)
at org.grails.datastore.gorm.GormStaticApi.withCriteria(GormStaticApi.groovy:303)
如何在对象不是简单对象的条件下使用in?我假设我需要使用 Child 的 id?
【问题讨论】:
-
'in'('child.id', childList*.id ) -
完美,非常感谢您这么快的回复!
标签: hibernate grails grails-orm criteria hibernate-criteria