sous-requête que je dois faire cette requête SQL avec DetachedCriteria:Critères Hibernate
SELECT g.id FROM games g
WHERE NOT EXISTS (
SELECT 1 FROM users_games ug WHERE ug.user_id = 1 AND g.id = ug.game_id)
L'idée est d'obtenir les IDs des jeux qui ne sont pas la propriété de l'utilisateur. J'ai essayé comme 10 approches différentes avec DetachedCriteria mais je reçois la « entité inconnue: null » MappingException Le code devrait ressembler à:
DetachedCriteria subquery = DetachedCriteria.forClass(UserGame.class, "ug")
.add(Restrictions.eq("ug.user.id", 1))
.add(Restrictions.eqProperty("ug.game.id","u.id"));
DetachedCriteria criteria = DetachedCriteria.forClass(Game.class, "g")
.add(Subqueries.notExists(subquery));
fixeraient également les projections pour retourner uniquement l'identifiant des jeux.
Des idées? Je pense que Hibernate a du mal à rejoindre les requêtes sans alias. Ajout d'alias fonctionne mais les résultats sont tout à fait faux.
N'appliquez-vous pas une association entre "games" et "user_games" dans vos objets/mappages? –
user_games a un mapping pour les jeux mais pas viceversa – Gonzalo