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)
}
}
}
我的要求是讓所有DomainA中的名字的名單與「M」開頭,最新的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)
}
}
,但它並沒有允許分頁和排序。
有人可以有任何想法獲得名稱以「M」開頭的所有DomainA列表,並且最新的domainBs在其電子郵件屬性中使用createCriteria
或hql
或任何其他方式包含gmail。
此查詢每次都會給我一個空列表。 – user1690588
你有滿足要求的數據嗎?查詢區分大小寫。我非常使用你的域名並建立一些樣本數據並進行測試。我會在今晚檢查代碼給github。 – Alidad
我創建了DomainA實例,名爲'Manish'和DomainB實例,電子郵件爲'test @ gmail.com',查詢給了我一個空列表。等待存儲庫。謝謝 – user1690588