Je cherche un critère d’hibernation pour suivre:
Dokument.class est mappé sur RoleId de rôle
Role.class a un contactIndressePersonnel
Contact.class Prénom Nom
Je veux rechercher First ou LastName sur la classe Contact et récupérer une liste de Dokuments connectés.
J’ai essayé quelque chose comme ça:
session.createCriteria(Dokument.class) .setFetchMode("role",FetchMode.JOIN) .setFetchMode("contact",FetchMode.JOIN) .add(Ressortingctions.eq("LastName","Test")).list();
Je reçois une erreur ne peut pas résoudre la propriété “LastName” pour la classe “Dokument”
Quelqu’un peut-il expliquer pourquoi la jointure recherche sur Dokument et non sur toutes les tables jointes? Merci d’avance pour toute l’aide!
Le mode de récupération indique uniquement que l’association doit être extraite. Si vous souhaitez append des ressortingctions sur une entité associée, vous devez créer un alias ou un sous-critère. Je préfère généralement utiliser des alias, mais YMMV:
Criteria c = session.createCriteria(Dokument.class, "dokument"); c.createAlias("dokument.role", "role"); // inner join by default c.createAlias("role.contact", "contact"); c.add(Ressortingctions.eq("contact.lastName", "Test")); return c.list();
Ceci est bien entendu bien expliqué dans le manuel de référence d’Hibernate , et le javadoc pour les critères a même des exemples. Lisez la documentation: elle contient de nombreuses informations utiles.