GORM:查询子查询为空

时间:2014-07-18 13:21:00

标签: mysql hibernate grails gorm

情景:

我有两个域bean书和作者。 作者与Book有一对多的关联。

我想要今年没有书面书籍的作者(这不是真实的情景:))

这是我的MySQL查询:

SELECT * FROM author AS a
WHERE 
(SELECT COUNT(b.id)
    FROM book AS b
    WHERE b.author_id = a.id
    AND b.releaseDate > '2014-01-01'
) = 0

如何将其转换为 Hibernate / Grails标准

修改:

  • 更明确:我需要等效的Grails标准。
  • 我有很多书和作者记录。 Gorm查询必须是高性能的。

2 个答案:

答案 0 :(得分:0)

这样的事情对你有用;由于分类,它可能会有点慢,但如果您的书籍数量相对较少,它不应该产生巨大的影响。

def targetDate = // define your date here.
def lazyAuthors = Author.findAll{
   books.sort{it.requestDate}[books.size()-1] > targetDate
}

**编辑** 事实证明,您无法查询瞬态,因此我原来的想法不起作用,但是我用来获取最新书籍的技术应该可行。

答案 1 :(得分:0)

我解决了,但没有使用标准。 我用过HQL:

def authors = Author.findAll("\
SELECT * FROM author AS a \
WHERE \
(SELECT COUNT(b.id) \
    FROM a.books AS b \
    WHERE b.releaseDate > '2014-01-01' \
) = 0")