-
Hibernate API Criteria
Bonjour,
J'essaye de trouver la solution du problème ci-dessous :
Table Personne
id
nom
prenom
anneeNaissance
Est-il possible de générer la requête SQL suivant en passant par l'api criteria ?
Code:
select * from (select * from personne where anneeNaissance in (?, ?, ?) where prenom = ?
Merci pour vos réponses.
-
Bonjour,
Il serait plus simple de faire ta sélection avec une seule requête :
Code:
SELECT id, nom, prenom, anneeNaissance FROM personne WHERE anneeNaissance = ? AND prenom = ?
Attention, il est préférable de lister les champs dans la requête plutôt que d'utiliser une *.
-
Effectivement, c'est une solution mais le problème est plus compliqué.
Je m'explique :
Je travaille sur une application où la table personne va contenir plus de 8 millions d'entrées en 2 ans (la table possède également des clés étrangères).
Nous avons effectué un benchmark qui nous a montré que notre requête initialise est peu performante.
Code:
SELECT id, nom, prenom, anneeNaissance FROM personne WHERE anneeNaissance = in (?, ?, ?) AND prenom = ?
Le DBA nous propose de mettre un index sur la colonne dateDeNaissance et d'utiliser la requête ci-dessous : (il connaît peu hibernate. Il exige uniquement que sa requête soit exécutée au niveau du SGBD)
Code:
select * from (select * from personne where anneeNaissance in (?, ?, ?)) where prenom = ?
Comment faire pour avoir un tel résultat en passant par l'api Criteria ? (nous ne souhaitons pas tous casser niveau applicatif pour écrire la requête en HQL)
-
A mon avis tu seras obligé de faire une requete JDBC native. C'est tjrs le pb avec les DBA ils n'aiment pas les framework de persistance :mrgreen: