Información y enlaces

Participa comentando, viendo lo que otros tienen que decir, o enlazandolo desde tu blog.


Otros artículos
Comunicación anónima por internet
Tetris 1D

Usando Hibernate 3.0: Delete ValueObject Where …

Posteado por dbejar en 22 February, 2007

No todas las implementaciones de persistencia JPA soportan usando EJBQL, el uso UPDATE y DELETE con clausula WHERE, pero Hibernate si es una de ellas. Si bien, recientemente nos llevamos una desagradable sorpresa al comprobar que Hibernate no soportaba la clausula LIMIT, no podemos si no congratularnos de que sinembargo si que dispongamos de esta otra funcionalidad implementada.
A continuacion va un pequeño ejemplo de uso de DELETE con WHERE en lugar de por Id:


String ejbql = "DELETE "+ fooPersistentVOClass.getSimpleName() + " WHERE "+where;
manager.getTransaction().begin();
deletedEntities= manager.createQuery(ejbql).executeUpdate();
manager.getTransaction().commit();

Ojo que executeUpdate() no devuelve necesariamente el numero de columnas borradas en la operacion, devuelve el numero de entidades eliminadas.

Mas informacion en:
http://www.hibernate.org/hib_docs/entitymanager/reference/en/html/batch.html



Escriba un comentario

Tomate un momento para comentar y contar lo que piensas sobre el post. Puedes usar un HTML básico para formatear

Comentarios leidos

Por cierto, el LIMIT no existe, pero JPA nos da un mecanismo mucho mas limpio para limitar los resultados.
En el framework-jpa nos basta con utilizar el método:
findByWhereLimit(String where,int indiceInicial,int numResultados)

y este básicamente se basa en:
Query query = manager.createQuery(_query);
query.setFirstResult(indiceInicial);
query.setMaxResults(numResultados);

Tenéis el código completo en:
http://desarrollo.viavansi.com/sites/viavansi-jpa/xref/com/viavansi/framework/persistencia/jpa/Ejb3Dao.html