Requête de critères Hibernate pour sélectionner des colonnes spécifiques
Dans Hibernate, la requête de critères récupère par défaut toutes les colonnes de la base de données. Toutefois, dans certains cas, vous souhaiterez peut-être exclure certaines colonnes pour améliorer les performances ou répondre à des exigences spécifiques.
Utiliser des projections pour exclure des colonnes
Pour exclure des colonnes spécifiques d'un Requête de critères, vous pouvez utiliser la méthode Projections.projectionList(). Cette méthode vous permet de spécifier uniquement les colonnes souhaitées dans la projection.
Exemple :
Supposons que vous ayez une requête qui récupère toutes les colonnes d'une table "Utilisateur". Pour exclure la colonne "âge" de la requête, vous pouvez utiliser le code suivant :
<code class="java">Criteria cr = session.createCriteria(User.class) .setProjection(Projections.projectionList() .add(Projections.property("id"), "id") .add(Projections.property("name"), "name")) .setResultTransformer(Transformers.aliasToBean(User.class));</code>
Gestion des erreurs de requête
Lors de l'utilisation de projections, vous pouvez rencontrer des erreurs si vous faites référence aux colonnes exclues dans la clause Where ou dans d'autres parties de la requête. Pour résoudre ce problème, vous pouvez spécifier explicitement les alias attribués aux colonnes projetées.
Exemple :
<code class="java">Criteria cr = session.createCriteria(User.class) .setProjection(Projections.projectionList() .add(Projections.property("id"), "user_id") .add(Projections.property("name"), "user_name")) .setResultTransformer(Transformers.aliasToBean(User.class)) .add(Restrictions.gt("user_id", 10));</code>
Dans cette requête, l'"id" et " Les colonnes "name" sont projetées et affectées respectivement aux alias "user_id" et "user_name". La clause Where fait alors référence à ces alias, évitant ainsi les erreurs qui pourraient survenir en faisant référence aux noms de colonnes d'origine.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!