2 votes

Hibernate, les associations ne fonctionnent pas

J'ai un modèle comme celui-ci

Seizurs => MatCountry => MatCountryI18n

Lorsque j'essaie d'interroger les données comme suit

criteria.
createAlias("matCountry","seizure_country",CriteriaSpecification.INNER_JOIN).       
createAlias("seizure_country.matCountryI18ns","seizure_country_translation",CriteriaSpecification.INNER_JOIN).
add(Restrictions.eq("seizure_country_translation.matLanguageCode", "de").
setFetchMode("seizure_country", FetchMode.JOIN).
setFetchMode("seizure_country_translation", FetchMode.JOIN);

et récupérer les données de la base de données

List<Seizure> seizures = getHibernateTemplate().findByCriteria(criteria);

Je m'attends à ce qu'Hibernate ne me donne que les objets (en particulier les objets enfants) qui correspondent à ma requête (où translation.matLanguageCode = de).

Mais lorsque j'accède aux objets enfants de MatCountryI18n

logger.info("Seizures: "+seizures.get(0).getMatCountry().getMatCountryI18ns().size());

Il me rend TOUS les objets MatCountryI18n qui sont associés à MatCountry

Merci de m'aider.

Qu'est-ce que je fais de travers ?

Salutations JS

2voto

joostschouten Points 2438

Vous demandez à hibernate de vous donner tous les Seizurs qui ont des MatCountry's qui ont un ou plusieurs MatCountryI18n's avec matLanguageCode == 'de'. C'est exactement ce que vous obtenez.

Il semble que vous ne souhaitiez sélectionner que les MatCountryI18n spécifiques avec matLanguageCode == 'de'. Je ferais cela en commençant votre sélection avec un critère MatCountryI18n's et en récupérant les Seizurs par le biais de vos associations dans l'ordre inverse comme vous le faites actuellement. Soit par programme, soit par l'intermédiaire d'un Transformateur de résultats .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X