HibernateCriteriaBuilder Grails

时间:2013-05-11 02:33:05

标签: hibernate grails

我有一个域名

Author{
   String name
   String AuthorId
   hasMany = [books:Book]
}

Book{
   String title
   String publisher
   belongsTo = [author:Author]
}

我唯一可以输入的是AuthorId。使用此值如何使用HibernetCriteriaBuilder eq(propertyName, propertyValue)

获取域Book的记录

谢谢!!!

1 个答案:

答案 0 :(得分:2)

在回答之前,几点检查点: - 1. id id默认绑定到域类,您可能不需要AuthorId 格莱尔按惯例去做。您希望使用authorId而不是AuthorId来避免错误的状态。

如果您已经完成this page,那么现在您将了解有关grails criteria的基本概念。除此之外,criteria也可用于associations

在您的用例中,您可以执行以下操作: - 如果您想从Books

获取所有Author
def books = Author.createCriteria().get{
      eq('AuthorId', authorId)
}.books

但这是一个漫长的过程,这可以非常轻松地完成

def books = Author.findByAuthorId(authorId)?.books
为什么我们需要一个标准?

Grails方式更简单: def books = Author.get(id)?.books

在标准中,这变为:

def books = Author.createCriteria().get{
          idEq("abc123") //'abc123' is your authorId
    }.books