Foros del Web » Programación para mayores de 30 ;) » Java »

Problemas con JPA

Estas en el tema de Problemas con JPA en el foro de Java en Foros del Web. Hola, estoy empezando con JPA, estoy utilizando la implementación de hibernate. Tengo definidos los pojos de mis entidades con las elaciones...y ya creada la base ...
  #1 (permalink)  
Antiguo 20/04/2009, 09:42
 
Fecha de Ingreso: noviembre-2007
Mensajes: 121
Antigüedad: 16 años, 5 meses
Puntos: 0
Problemas con JPA

Hola, estoy empezando con JPA, estoy utilizando la implementación de hibernate. Tengo definidos los pojos de mis entidades con las elaciones...y ya creada la base de datos y todo. Tengo una clase llamada CategoriasDao.java, en la cual tengo los metodos para insertar y eliminar de la base de datos, y estos me funcionan sin problema. Ahora he definido un nuevo metdo para modificar un registro y estoy teniendo probelmas al ejecutar un ejemplo de prueba, el codigo del metodo es el siguiente:

public void modificarCategoria(String nombreViejo, String nombreNuevo){

EntityManager em=ManUtil.getEntityManagerFactory().createEntityM anager();
try {
em.getTransaction().begin();
Categorias categoria=em.find(Categorias.class,nombreViejo);

if (categoria !=null){
categoria.setNombre(nombreNuevo);
//em.merge(categoria);
em.getTransaction().commit();


logger.info("Se ha cambiado la categoria "+nombreViejo+" por "+nombreNuevo);
}
}catch (PersistenceException Pe){
em.getTransaction().rollback();
logger.info("Se ha producido una exepción del bloque de persistencia al modificar la categoria");
throw Pe;
}

He probado con em.merge(), em.persist() hasta sin ponerlo. El problema es que me salta la siguiente excepción:

Exception in thread "main" java.lang.IllegalStateException: Transaction not active
at org.hibernate.ejb.TransactionImpl.rollback(Transac tionImpl.java:82)
at persistenciaJPA.dao.CategoriasDao.modificarCategor ia(CategoriasDao.java:89)
at persistenciaJPA.principal.main(principal.java:74)


Si quito el commit no me salta la excepcion, pero no me guarda lo cambios en la BD. Es como si me hubiese cerrado la transacción pero no se como resolverlo.

Muchas gracias
  #2 (permalink)  
Antiguo 21/04/2009, 13:09
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Problemas con JPA

Parece ser que estas intentando hacer un rollback pero la transaccion no está activa.

Yo diria que primero te esta saltando una PersistenceException y que dentro del catch, al hacer el rollback te esta saltando la segunda, antes de poder relanzar la PersistenceException.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 22/04/2009, 01:38
 
Fecha de Ingreso: noviembre-2007
Mensajes: 121
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Problemas con JPA

Muchas gracias, al final era porque estaba intentando modificar la pk de la tabla y he visto por ahi que jpa no permite modificar los campos id (pk en la tabla). También es cierto que no tiene mucho sentido modificar a pk e la tabla, así que al final he modificado la estructura de la tabla.

Otra consultilla si quiero modificar un registro, lo recupero, modifico los campos y luego tengo que hacer denuevo persist() ¿aunque el objeto no sea nuevo?. Es que intenté hacerlo con flush() y luego comit y no se veían reflejados los cambios. Sin embargo si hago persist() si se ven, y yo pensaba que persist() era para hacer persistente un objeto nuevo.

Saludos y Gracias
  #4 (permalink)  
Antiguo 22/04/2009, 04:19
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Problemas con JPA

Con JPA no hace falta mas que recuperar el objeto, cambiarle los datos y hacer un commit. Con Hibernate si que hace falta hacer un saveOrUpdate() pero con JPA no.

Asegurate que el objeto que estas modificando es el mismo que has recuperado del EntityManager, no vale ponerle la misma PK, por ejemplo.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 22/04/2009, 04:40
 
Fecha de Ingreso: noviembre-2007
Mensajes: 121
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Problemas con JPA

Muchas gracias, ya me funciona.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:20.