Supposons que les objets de type A soient stockés dans la base de données. Voici la façon dont je charge un spécifique de DB en utilisant Mise en veille prolongée:Hibernation: vérifier si l'objet existe
org.hibernate.Session session = ...;
long id = 1;
A obj = session.load(A.class, id);
Si l'objet avec id = 1 n'existe pas que je vais me ObjectNotFoundException. Mais existe-t-il un moyen de vérifier si un tel objet existe sans avoir à intercepter l'exception? Ce que je voudrais avoir est lissée comme:
org.hibernate.Session session = ...;
long id = 1;
boolean exists = session.exists(A.class, id);
if(exists){
// do smth.....
}
Impossible de trouver hibernent docs ...
Hmm ... Je reçois toujours la même chose (ObjectNotFoundException), peu importe si je utilisez "charger" ou "obtenir". –
Peut-être que vous obtenez une exception d'un session.load() précédent? De la documentation pour ObjectNotFoundException: Cette exception ne peut pas être levée lorsque load() est appelée car load() renvoie un proxy si possible Utilisez Session.get() pour tester si une ligne existe dans la base de données. – Juanma
obtenir des travaux mais c'est une approche lente puisque Hibernate devra aller chercher toutes les colonnes et les affecter au nouvel objet et le stocker dans la session. Si vous ne voulez pas gaspiller inutilement des ressources, pensez plutôt à l'approche HQL. –