Ho due dominiricerca registra le basi sulle più recenti record in un rapporto hasMany
class DomainA {
String name
Date dateCreated
Date lastUpdated
static transients = ['email']
static hasMany = [domainBs: DomainB]
public String getEmail() {
DomainB.mostRecentRecord(this).get()?.email
}
}
e
class DomainB {
String email
Date dateCreated
Date lastUpdated
static belongsTo = [domainA: DomainA]
static namedQueries = {
mostRecentRecord { domainA ->
eq 'domainA', domainA
order('dateCreated', 'desc')
maxResults(1)
}
}
}
La mia esigenza è quella di ottenere l'elenco di tutti DomainA cui nome inizia con "M" e l'ultimo record di dominioBs contiene gmail nella loro proprietà di posta elettronica.
Ho provato createCriteria
e hql
ma non ho ottenuto il risultato desiderato, potrebbe essere che sto facendo qualcosa di sbagliato.
seguito è il mio codice corrente
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)
}
}
ma non permette di impaginazione e di ordinamento.
Qualcuno può avere un'idea per ottenere l'elenco di tutti i domini DomainA il cui nome inizia con "M" e gli ultimi domini contiene Gmail nella loro proprietà e-mail utilizzando createCriteria
o hql
o in qualsiasi altro modo.
Questa query mi fornisce ogni volta una lista vuota. – user1690588
Avete i dati per soddisfare i requisiti? la query è case sensitive. Ho praticamente usato i tuoi domini e creato alcuni dati di esempio e testato. Stasera controllerò il codice per github. – Alidad
Sono stato creato un'istanza DomainA con il nome 'Manish' e l'istanza DomainB con l'e-mail' test @ gmail.com' e la query mi fornisce una lista vuota. In attesa del repository. Grazie – user1690588