Supongamos que los objetos del tipo A se almacenan en DB. Esta es la forma en que se carga uno específico de la base de datos utilizando hibernación:Hibernar: compruebe si existe el objeto
org.hibernate.Session session = ...;
long id = 1;
A obj = session.load(A.class, id);
Si no existe objeto con id = 1 voy a tener ObjectNotFoundException. ¿Pero hay una manera de verificar si tal objeto existe sin tener que atrapar la excepción? Lo que me gustaría es tener algo bajo como:
org.hibernate.Session session = ...;
long id = 1;
boolean exists = session.exists(A.class, id);
if(exists){
// do smth.....
}
No se pudo encontrar que hibernate docs ...
Hmm ... sigo teniendo el mismo (ObjectNotFoundException) no importa si me usa "cargar" o "obtener". –
Quizás esté obteniendo una excepción de una session.load() anterior? De los documentos para ObjectNotFoundException: "Esta excepción no se inicia cuando se llama a load() porque load() devuelve un proxy si es posible. Use Session.get() para comprobar si existe una fila en el db." – Juanma
funciona pero es un enfoque lento ya que Hibernate tendrá que buscar todas las columnas y afectarlas al nuevo objeto y almacenarlo en la sesión. Si no quiere desperdiciar recursos inútilmente, considere el enfoque HQL en su lugar. –