当hasMany属性为null时,无法获取对象列表。
Class User {
...
List<EMail> emails
static hasMany = [emails: EMail,... ]
static mappedBy = [emails: 'customer',...]
...
}
电子邮件是另一个具有一些字符串属性的类
现在我正在尝试进行简单的查询:
方法1:
def users = User.findAllByEmailsIsEmpty()
这给出了错误:
Queries of type IsEmpty are not supported by this implementation
方法2:
def users = User.findAllByEmailsIsNull()
这为所有用户提供了与之关联的电子邮件对象。
然后我考虑尝试Criteria Query(https://grails.github.io/grails-doc/latest/ref/Domain%20Classes/createCriteria.html)
方法3:
def userCriteria = User.createCriteria()
def users = userCriteria.list(){
sizeEq('emails', 0)
}
这给出了无结果(users.size()为0)
方法4:
def userCriteria = User.createCriteria()
def users = userCriteria.list(){
isNull('emails')
}
这再次为所有用户提供了那些没有电子邮件的用户。
方法5:
def userCriteria = User.createCriteria()
def users = userCriteria.list(){
isEmpty('emails')
}
这给出了错误: 此实现不支持类型为IsEmpty的查询
方法6:
def userCriteria = User.createCriteria()
def users = userCriteria.list(){
eq('emails', null)
}
这再次列出了所有用户。
PS: Grails is configured with Database as MongoDB.
答案 0 :(得分:0)
我会使用grep方法。像这样:
nullEmailUsers = User.list().grep {
!it.emails
}
答案 1 :(得分:0)
User.findAll {emails.id!= null}完成任务!