J'ai deux domainesrecherche Documents bases sur le dernier enregistrement dans une relation hasMany
class DomainA {
String name
Date dateCreated
Date lastUpdated
static transients = ['email']
static hasMany = [domainBs: DomainB]
public String getEmail() {
DomainB.mostRecentRecord(this).get()?.email
}
}
et
class DomainB {
String email
Date dateCreated
Date lastUpdated
static belongsTo = [domainA: DomainA]
static namedQueries = {
mostRecentRecord { domainA ->
eq 'domainA', domainA
order('dateCreated', 'desc')
maxResults(1)
}
}
}
Mon exigence est d'obtenir la liste de tous DomaineA dont le nom commence par « M » et Le dernier enregistrement domainBs contient Gmail dans sa propriété de messagerie.
J'ai essayé createCriteria
et hql
mais je n'ai pas obtenu le résultat souhaité, peut-être que je fais quelque chose de mal.
Après mon code actuel
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)
}
}
mais il ne permet et trier la pagination. Quelqu'un peut-il avoir une idée pour obtenir la liste de tous les DomainA dont le nom commence par "M" et le dernier domainBs contient gmail dans leur propriété d'email en utilisant createCriteria
ou hql
ou toute autre manière.
Cette requête me donne une liste vide à chaque fois. – user1690588
Avez-vous les données pour répondre aux exigences? la requête est sensible à la casse. J'ai pratiquement utilisé vos domaines et construit des exemples de données et les ai testés. Je vais vérifier le code pour github ce soir. – Alidad
Je suis créé DomainA instance avec le nom 'Manish' et l'instance DomainB avec l'email' test @ gmail.com' et la requête me donne la liste vide. En attente du référentiel. Merci – user1690588