我知道我可以在Grails中做Parent.childId
,但有什么类似我只能为hasMany中的每个孩子加载id(代理)吗?即,类似于Parent.childrenIds
?
在我的例子中,hasMany由joinTable映射。
答案 0 :(得分:2)
您可以使用projection执行此操作。 e.g。
def result = Child.createCriteria().list {
projections {
property('id')
}
eq ('parent', parent)
}
这将只返回子对象的id。
答案 1 :(得分:0)
记住joinTable
:
def getChildIds(parentId) {
Child.withSession { session ->
def sql = new Sql(session.connection())
sql.rows(
'select pc.child_id from parent_child pc where pc.parent_id = :parentId',
[parentId: parentId]
).collect{ it.child_id }
}
}
这适用于joinTable
映射为:
class Parent {
static mapping = {
childs joinTable: [name: 'parent_child', column: 'child_id', key: 'parent_id']
}
...
它并不漂亮,但我认为这是考虑情况和要求的最佳方式。