我有一个域名
Author{
String name
String AuthorId
hasMany = [books:Book]
}
和
Book{
String title
String publisher
belongsTo = [author:Author]
}
我唯一可以输入的是AuthorId。使用此值如何使用HibernetCriteriaBuilder eq(propertyName, propertyValue)
谢谢!!!
答案 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