mam dwie domenySzukaj rekordy bazy na najnowszej płycie w związku hasMany
class DomainA {
String name
Date dateCreated
Date lastUpdated
static transients = ['email']
static hasMany = [domainBs: DomainB]
public String getEmail() {
DomainB.mostRecentRecord(this).get()?.email
}
}
i
class DomainB {
String email
Date dateCreated
Date lastUpdated
static belongsTo = [domainA: DomainA]
static namedQueries = {
mostRecentRecord { domainA ->
eq 'domainA', domainA
order('dateCreated', 'desc')
maxResults(1)
}
}
}
Moje wymogiem jest wykaz wszystkich DomainA którego nazwa się zaczyna się od „M” i ostatni rekord domenyBs zawiera adres gmail w swojej usłudze e-mail.
Próbowałem createCriteria
i hql
, ale nie uzyskałem pożądanego rezultatu, być może robię coś nie tak.
Poniżej mój aktualny kod
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)
}
}
ale nie pozwala paginacji i sortowania.
Czy ktoś może mieć pomysł, aby uzyskać listę wszystkich DomainA, którego nazwa zaczyna się od "M", a ostatnie domenyB zawiera gmail w ich właściwości e-mail przy użyciu createCriteria
lub hql
lub w jakikolwiek inny sposób.
To zapytanie daje mi pustą listę za każdym razem. – user1690588
Czy masz dane, aby spełnić wymagania? zapytanie uwzględnia wielkość liter. Prawie użyłem twoich domen i zbudowałem kilka przykładowych danych i przetestowałem to. Sprawdzę dziś kod do github. – Alidad
Utworzono instancję DomainA o nazwie "Manish' i instancja DomainB z adresem mailowym' test @ gmail.com', a zapytanie daje mi pustą listę. Oczekiwanie na repozytorium. Dzięki – user1690588