0

我有一个域

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

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

我可以拥有的唯一输入是 AuthorId。使用此值如何使用 HibernetCriteriaBuilder 获取域 Book 的记录eq(propertyName, propertyValue)

谢谢!!!

4

1 回答 1

2

在回答之前,有几个检查点:-
1. idid 默认绑定到域类,您可能不需要AuthorId.
2. Grails 遵循惯例。你想用authorId而不是AuthorId避免错误的状态。

如果你已经浏览过这个页面,那么现在你应该对 grails 有了基本的了解criteria。除此之外,criteria还可以用于associations.

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

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
于 2013-05-11T02:45:46.473 回答