我有两个域
class DomainA {
String name
Date dateCreated
Date lastUpdated
static transients = ['email']
static hasMany = [domainBs: DomainB]
public String getEmail() {
DomainB.mostRecentRecord(this).get()?.email
}
}
和
class DomainB {
String email
Date dateCreated
Date lastUpdated
static belongsTo = [domainA: DomainA]
static namedQueries = {
mostRecentRecord { domainA ->
eq 'domainA', domainA
order('dateCreated', 'desc')
maxResults(1)
}
}
}
我的要求是获取名称以“M”开头的所有 DomainA 的列表,并且最新的 domainBs 记录在其电子邮件属性中包含 gmail。
我试过createCriteria
但hql
没有得到想要的结果,可能是我做错了什么。
以下是我当前的代码
List<DomainA> listA = DomainA.findAllByNameIlike("M%")
List<DomainB> listB = []
listA.each { entity ->
DomainB domainB = DomainB.mostRecentRecord(entity).get()
if (domainB && (domainB.email.contains('gmail'))) {
listB.add(domainB)
}
}
但它不允许分页和排序。
createCriteria
有人可以使用或hql
或任何其他方式获取名称以“M”开头的所有 DomainA 的列表,并且最新的 domainBs 在其电子邮件属性中包含 gmail 。