为什么带有JOIN的Grails/HQL查询会返回域类对的列表?

3 grails join hql

我无法弄清楚如何在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])
Run Code Online (Sandbox Code Playgroud)

latestPhotosForUser不是PhotoOwners的列表.这是[PhotoOwner,PhotoStorage]对的列表.由于我正在做一个PhotoOwner.findAll,我原本希望看到只有PhotoOwners.

我做错了什么,或者这是正确的行为?

Bur*_*ith 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])
Run Code Online (Sandbox Code Playgroud)

  • 基本上,是的.我永远不明白为什么没有"Domain"静态类具有这些功能而不是将它们放在所有域类上. (2认同)