Si votre objectif est d'inspecter certains fixés sur le vide, vous pouvez utiliser simple requête HQL:
boolean exists =(Long) session.createQuery("select count(*) from PersistentEntity where ...").uniqueResult()>0
n'utilisez pas de count(*) pour exister de la vérification, car toutes les requêtes d'agrégation sont mauvais pour la performance blog.jooq.org/2016/09/14/... stokito est droit. mieux vaut tard que jamais.
Utilisation boolean exists = session.createQuery("from PersistentEntity where ...").setMaxResults(1).uniqueResult() != null; mais cette force Hibernate pour charger tous les domaines et de faire de l'hydratation de l'objet, mais vous avez juste besoin de vérifier la valeur null.
Utilisation session.get(PersistentEntity.class, id) != null et ce sera plus rapide si vous avez activé le cache de second niveau mais il ne sera pas un problème si vous avez besoin de plus criteries que juste id.
Vous pouvez utiliser la méthode suivante: getSession().createQuery("select 1 from DTOAny t where ...").uniqueResult() != null)
Pourquoi les downvotes? Semble être un bon résumé pour moi.
Si nous sommes à l'aide de la clause where, base de données peut avoir pour balayer toute la table pour compter le nombre d'enregistrements qui correspond à nos critères, cependant, nous pouvons nous limiter à la recherche seulement un record, il suffit de dire à propos de la vacuité.
Si il n'y avait pas des filtres de recherche de la requête précédente serait recevable que la base de données voudrais faire quelques optimisation de l'utilisation d'un index.
donc je suppose requête suivante va augmenter de la perfomance de comparer à la précédente:
boolean exists = session.createQuery("from PersistentEntity where ...").setMaxResults(1).uniqueResult()!=null;
J'ai utilisé les éléments suivants: SELECT COUNT(e) FROM Entity e. A fonctionné parfaitement bien dans Spring Data JPA.
Je reçois un java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Boolean à l'aide de votre requête avec le Printemps de Données. Pourriez-vous afficher en plein travail exemple?
Si votre objectif est d'inspecter certains fixés sur le vide, vous pouvez utiliser simple requête HQL:
count(*)
pour exister de la vérification, car toutes les requêtes d'agrégation sont mauvais pour la performance blog.jooq.org/2016/09/14/...stokito est droit. mieux vaut tard que jamais.
OriginalL'auteur user and
HQL ne permettent pas d'utiliser
exists
déclaration. Mais vous pouvez utiliser plusieurs approches:count(*) > 0
mais c'est mauvais pour la performance Évitez d'Utiliser la fonction COUNT() en SQL Quand Vous Pourriez Utiliser EXISTS()boolean exists = session.createQuery("from PersistentEntity where ...").setMaxResults(1).uniqueResult() != null;
mais cette force Hibernate pour charger tous les domaines et de faire de l'hydratation de l'objet, mais vous avez juste besoin de vérifier la valeur null.session.get(PersistentEntity.class, id) != null
et ce sera plus rapide si vous avez activé le cache de second niveau mais il ne sera pas un problème si vous avez besoin de plus criteries que justeid
.getSession().createQuery("select 1 from DTOAny t where ...").uniqueResult() != null)
OriginalL'auteur stokito
Si nous sommes à l'aide de la clause where, base de données peut avoir pour balayer toute la table pour compter le nombre d'enregistrements qui correspond à nos critères, cependant, nous pouvons nous limiter à la recherche seulement un record, il suffit de dire à propos de la vacuité.
Si il n'y avait pas des filtres de recherche de la requête précédente serait recevable que la base de données voudrais faire quelques optimisation de l'utilisation d'un index.
donc je suppose requête suivante va augmenter de la perfomance de comparer à la précédente:
OriginalL'auteur Mykola Lysenko
Il y a quelques belles observations à propos de l'aide EXISTE, mais pas d'exemples. Voici ma solution en mode veille prolongée 5.2:
OriginalL'auteur ptoinson
J'ai utilisé les éléments suivants:
SELECT COUNT(e) FROM Entity e
. A fonctionné parfaitement bien dans Spring Data JPA.java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Boolean
à l'aide de votre requête avec le Printemps de Données. Pourriez-vous afficher en plein travail exemple?OriginalL'auteur Matthew Cachia
Essayer:
Fonctionne très bien avec les Données du Printemps.
OriginalL'auteur Radek Wroblewski