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

Ayuda JPA

Estas en el tema de Ayuda JPA en el foro de Java en Foros del Web. Hola buenas soy nuevo en JPA , consegui consultar en la BD y añadir pero eliminar no me funciona y no encuentro mucha información de ...
  #1 (permalink)  
Antiguo 20/04/2009, 03:08
 
Fecha de Ingreso: abril-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Ayuda JPA

Hola buenas soy nuevo en JPA , consegui consultar en la BD y añadir pero eliminar no me funciona y no encuentro mucha información de ello, os pego el codigo y si alguien me puede ayudar y decirme que hago mal que seguramente sea todo ... se lo agradeceria mucho.

LibroDao es la clase:

public void eliminarLibro(String isbnParam) {
EntityManager em = emf.createEntityManager();
em.createNamedQuery("Libro.Eliminar");
Libro l = new Libro();
em.getTransaction().begin();
Query consulta = em.createQuery("DELETE FROM l WHERE l.isbn:=isbn");
consulta.setParameter("isbn", isbnParam);
em.persist(l);
em.flush();
}

libroBean:
public String eliminaLibro(){
LibroDao daoLibro = new LibroDao();
daoLibro.eliminarLibro(isbn);
setLibros(daoLibro.findAllLibro());<--Esto carga la lista de libros
return "listado";
}


En la vista :

<h:form>
<h:commandLink value="Eliminar Libro"action="{libroBean.eliminaLibro}">
<f:param name="isbn" value="#{libroBean.libro.isbn}" />
</h:commandLink>
</h:form>
El parametro lo e definido en el faces-config.


P.D:Gracias de antemano.
  #2 (permalink)  
Antiguo 20/04/2009, 08:48
Avatar de cptanalatriste  
Fecha de Ingreso: octubre-2008
Ubicación: Lima, Perú
Mensajes: 118
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Ayuda JPA

Hola Alfredo!

Para eliminar registros de base de datos mediante la interfaz Query es necesario que utilices el método executeUpdate. Entonces, tu método quedaría mas o menos así:

...
// iniciar transacción
Query consulta = em.createQuery("DELETE FROM l WHERE l.isbn:=isbn ");
consulta .setParameter("isbn", isbnParam);
int results = query.executeUpdate();
// terminar transacción
...

Ahora, no entiendo bien porque creas el namedQuery "Libro.Eliminar", si es que no lo utilizas. Supongo que se te pasó xD.

Saludos y espero que ahora funcione!
__________________
Carlos G. Gavidia
Sun Certified Professional
IBM Certified Solution Designer
http://certified-es.blogspot.com/
  #3 (permalink)  
Antiguo 21/04/2009, 02:43
 
Fecha de Ingreso: abril-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda JPA

Muchas gracias amigoooooo pues lo uso porque soy un novato en JPA y en los manuales que lei lo hacian asi no se si mas tarde lo necesitare.Gracia nuevamente.
  #4 (permalink)  
Antiguo 21/04/2009, 04:03
 
Fecha de Ingreso: abril-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda JPA

EntityManager em = emf.createEntityManager();
Libro l = new Libro();
EntityTransaction tx = em.getTransaction();
tx.begin();
try {
Query consulta = em.createQuery("DELETE FROM l WHERE l.isbn:=isbn");
consulta.setParameter("isbn", isbnParam);
int results = consulta.executeUpdate();
em.flush();
tx.commit();
} catch (PersistenceException pe) {
tx.rollback();
throw pe;
} finally {
em.close();
}


asi me quedo el metodo al final ,¿ves algun error?.
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 09:08.