我无法弄清楚如何在Groovy / Grails中进行“加入”以及我得到的返回值
person = User.get(user.id)
def latestPhotosForUser = PhotoOwner.findAll(
"FROM PhotoOwner AS a, PhotoStorage AS b WHERE (a.owner=:person AND a.photo = b)",
[person:person], [max:3])
latestPhotosForUser不是PhotoOwners的列表。这是[PhotoOwner,PhotoStorage]对的列表。由于我正在做一个PhotoOwner.findAll,我原本希望看到只有PhotoOwners。
我做错了什么,或者这是正确的行为?
答案 0 :(得分:5)
executeQuery
和findAll
有点误导,因为您调用它们的类与查询或其返回类型无关 - GORM将方法添加到所有域类。
考虑到你问我想要的问题的方式
def latestPhotosForUser = PhotoOwner.executeQuery(
"SELECT b FROM PhotoOwner a, PhotoStorage b WHERE a.owner=:person AND a.photo = b",
[person:person], [max:3])
答案 1 :(得分:0)
我想说你可以通过动态查找器实现这一点,如下所示:
def latestPhotosForUser = PhotoOwner.findAllByOwner(person, [max:3])
你可以深入了解最新的PictureForUser.photo,以便进入存储。