Résolu: Changer le type de jointure à INNER_JOINGrails Critères Hibernate: Obtenez l'entrée de table originial
J'essaie d'obtenir la table d'entrée originale d'une classe de domaine après l'exécution d'un critère de mise en veille prolongée.
Par exemple:
La classe de domaine A a une association hasMany à la classe de domaine B.
L'entité de A avec l'ID 1, a deux entités de B avec les ids 11 et 12.
J'exécution les critères suivants:
Criteria criteria = session.createCriteria(A.class)
criteria.createAlias("Bs","B",CriteriaSpecification.LEFT_JOIN)
criteria.add(Restrictions.like("B.property", "%"+something+"%")
def list=criteria.list().unique()
maintenant, j'ai un jeu de résultats avec toutes les entités de a, qui a obtenu une entité B, qui fullfilles les critères.
Mais les résultats de A sont différents des entités originales de A, en ce qui concerne la relation hasMany avec B. Les entités de B, qui ne remplissent pas les critères sont manquantes.
Par exemple: L'entité A avec id 1 seulement a obtenu le entitie B avec id 11.
Même si j'exécute un
def newA=A.findById(list[0])
le newA
seulement obtenu l'entité B avec l'ID 11. Et le 12 est manquant.
Des idées?
Je garde toujours avec flush: true. Si j'exécute def newA = A.findByName (list [0] .name) le résultat obtient toutes les instances associées. – fabschu
Avez-vous essayé d'exécuter la requête à partir de la réponse? – Chris
Oui, avec le même effet ... – fabschu