我在弄清楚如何在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不是照片所有者的列表。这是[PhotoOwner,PhotoStorage]对的列表。由于我正在执行PhotoOwner.findAll,所以我希望只看到PhotoOwners。

我是在做错什么,还是这是正确的行为?

最佳答案

executeQueryfindAll有点误导,因为您调用它们的类与查询或其返回类型没有关系-GORM将方法添加到所有域类。

考虑到你问这个问题的方式,我假设你想要

def latestPhotosForUser = PhotoOwner.executeQuery(
   "SELECT b FROM PhotoOwner a, PhotoStorage b WHERE a.owner=:person AND a.photo = b",
   [person:person], [max:3])

09-25 22:03