空关联的 Grails GORM 标准
Grails GORM criteria on null association
我有一个域 object 和一个关联的域 object,我希望能够将其作为查询的一部分进行搜索。
以 Book 模型为例,我有:
public class Book{
Author author
String title
}
public class Author{
String name
}
.. 并想像这样过滤:
def book = Book.withCriteria{
or{
ilike(title, "%" + params.filter + "%")
author{
ilike("name", "%" + params.filter + "%")
}
}
}
我遇到的问题是,如果我在查询中包含作者,那么任何作者为空的 "Books" 都不会返回,即使标题匹配也是如此。
这可能是由于在 Book 和 Author 之间创建了隐式内部联接。尝试使用这样的左外连接:
def book = Book.withCriteria{
createAlias 'author', 'auth', org.hibernate.sql.JoinType.LEFT_OUTER_JOIN
or{
ilike(title, "%" + params.filter + "%")
ilike("auth.name", "%" + params.filter + "%")
}
}
我有一个域 object 和一个关联的域 object,我希望能够将其作为查询的一部分进行搜索。
以 Book 模型为例,我有:
public class Book{
Author author
String title
}
public class Author{
String name
}
.. 并想像这样过滤:
def book = Book.withCriteria{
or{
ilike(title, "%" + params.filter + "%")
author{
ilike("name", "%" + params.filter + "%")
}
}
}
我遇到的问题是,如果我在查询中包含作者,那么任何作者为空的 "Books" 都不会返回,即使标题匹配也是如此。
这可能是由于在 Book 和 Author 之间创建了隐式内部联接。尝试使用这样的左外连接:
def book = Book.withCriteria{
createAlias 'author', 'auth', org.hibernate.sql.JoinType.LEFT_OUTER_JOIN
or{
ilike(title, "%" + params.filter + "%")
ilike("auth.name", "%" + params.filter + "%")
}
}