Java - Problema empleando JPA

   
Vista:

Problema empleando JPA

Publicado por Fernando (26 intervenciones) el 26/05/2008 06:08:07
Hola a todos, cómo están?
Espero me puedan ayudar con este error.
Estoy probando el uso de JPA para persistencia en una pequeña aplicación de escritorio. Como recien estoy empezando en JPA, estoy haciendo unas pequeñas pruebas antes de empezar con el proyecto en sí.

He creado mis clases basadas en las tablas de mi BD (empleando el wizard de netbeans 6.0) y no he tenido problemas.
Al momento de correr la aplicación, obtengo el siguiente error:

init:
deps-jar:
compile:
run:
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named PruebaJPAPU: The following providers:
oracle.toplink.essentials.PersistenceProvider
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider
Returned null to createEntityManagerFactory.

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:154)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
at prueba2jpa.Main.main(Main.java:28)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

El XML empleado es el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="PruebaJPAPU" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<class>prueba2jpa.persitencia.Evento</class>
<class>prueba2jpa.persitencia.Permiso</class>
<properties>
<property name="toplink.jdbc.user" value="postgres"/>
<property name="toplink.jdbc.password" value="prueba"/>
<property name="toplink.jdbc.url" value="jdbc:postgresql://localhost:5432/postgres"/>
<property name="toplink.jdbc.driver" value="org.postgresql.Driver"/>
</properties>
</persistence-unit>
</persistence>

Las entidades son las siguientes:

@Entity
@Table(name = "EVENTO")
@NamedQueries({@NamedQuery(name = "Evento.findByIntIdEvento", query = "SELECT e FROM Evento e WHERE e.intIdEvento = :intIdEvento"), @NamedQuery(name = "Evento.findByStrNombre", query = "SELECT e FROM Evento e WHERE e.strNombre = :strNombre"), @NamedQuery(name = "Evento.findByStrDescripcion", query = "SELECT e FROM Evento e WHERE e.strDescripcion = :strDescripcion"), @NamedQuery(name = "Evento.findByStrEstado", query = "SELECT e FROM Evento e WHERE e.strEstado = :strEstado")})
public class Evento implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "intIdEvento", nullable = false)
private Integer intIdEvento;
@Column(name = "strNombre")
private String strNombre;
@Column(name = "strDescripcion")
private String strDescripcion;
@Column(name = "strEstado")
private String strEstado;

public Evento() {
}

public Evento(Integer intIdEvento) {
this.intIdEvento = intIdEvento;
}

public Integer getIntIdEvento() {
return intIdEvento;
}

public void setIntIdEvento(Integer intIdEvento) {
this.intIdEvento = intIdEvento;
}

public String getStrNombre() {
return strNombre;
}

public void setStrNombre(String strNombre) {
this.strNombre = strNombre;
}

public String getStrDescripcion() {
return strDescripcion;
}

public void setStrDescripcion(String strDescripcion) {
this.strDescripcion = strDescripcion;
}

public String getStrEstado() {
return strEstado;
}

public void setStrEstado(String strEstado) {
this.strEstado = strEstado;
}

@Override
public int hashCode() {
int hash = 0;
hash += (intIdEvento != null ? intIdEvento.hashCode() : 0);
return hash;
}

@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Evento)) {
return false;
}
Evento other = (Evento) object;
if ((this.intIdEvento == null && other.intIdEvento != null) || (this.intIdEvento != null && !this.intIdEvento.equals(other.intIdEvento))) {
return false;
}
return true;
}

@Override
public String toString() {
return "prueba2jpa.persitencia.Evento[intIdEvento=" + intIdEvento + "]";
}

}


@Entity
@Table(name = "PERMISO")
@NamedQueries({@NamedQuery(name = "Permiso.findByIndIdPermiso", query = "SELECT p FROM Permiso p WHERE p.indIdPermiso = :indIdPermiso"), @NamedQuery(name = "Permiso.findByStrNombre", query = "SELECT p FROM Permiso p WHERE p.strNombre = :strNombre"), @NamedQuery(name = "Permiso.findByStrDescripcion", query = "SELECT p FROM Permiso p WHERE p.strDescripcion = :strDescripcion"), @NamedQuery(name = "Permiso.findByStrEstado", query = "SELECT p FROM Permiso p WHERE p.strEstado = :strEstado")})
public class Permiso implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "indIdPermiso", nullable = false)
private Integer indIdPermiso;
@Column(name = "strNombre")
private String strNombre;
@Column(name = "strDescripcion")
private String strDescripcion;
@Column(name = "strEstado")
private String strEstado;

public Permiso() {
}

public Permiso(Integer indIdPermiso) {
this.indIdPermiso = indIdPermiso;
}

public Integer getIndIdPermiso() {
return indIdPermiso;
}

public void setIndIdPermiso(Integer indIdPermiso) {
this.indIdPermiso = indIdPermiso;
}

public String getStrNombre() {
return strNombre;
}

public void setStrNombre(String strNombre) {
this.strNombre = strNombre;
}

public String getStrDescripcion() {
return strDescripcion;
}

public void setStrDescripcion(String strDescripcion) {
this.strDescripcion = strDescripcion;
}

public String getStrEstado() {
return strEstado;
}

public void setStrEstado(String strEstado) {
this.strEstado = strEstado;
}

@Override
public int hashCode() {
int hash = 0;
hash += (indIdPermiso != null ? indIdPermiso.hashCode() : 0);
return hash;
}

@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Permiso)) {
return false;
}
Permiso other = (Permiso) object;
if ((this.indIdPermiso == null && other.indIdPermiso != null) || (this.indIdPermiso != null && !this.indIdPermiso.equals(other.indIdPermiso))) {
return false;
}
return true;
}

@Override
public String toString() {
return "prueba2jpa.persitencia.Permiso[indIdPermiso=" + indIdPermiso + "]";
}

}


Y el main de programa es:

public class Main {

/**
* @param args the command line arguments
*/

private static EntityManagerFactory emf;
private static EntityManager em;

public static void main(String[] args) {
// TODO code application logic here
emf = Persistence.createEntityManagerFactory("PruebaJPAPU");
em = (EntityManager)emf.createEntityManager();
em.getTransaction().begin();

Permiso permiso0 = new Permiso();
permiso0.setIndIdPermiso(5);
permiso0.setStrNombre("Permiso1");
permiso0.setStrDescripcion("Descripcion Permiso1");
permiso0.setStrEstado("HABILITADO");

em.persist(permiso0);

em.getTransaction().commit();
em.close();

System.out.print("Resultado satisfactorio");
}

}

Tengo importadas 3 librerias: Toplinks essentials, toplink essentials agent y el JDBC para postgres.

Les agradecería mucho su ayuda, he estado buscando en internet información relacionada con este error, pero no he podido encontrarla.
Quedo a la espera de sus respuestas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema empleando JPA

Publicado por alberto (1 intervención) el 24/08/2008 20:38:15
Yo tengo el mismo problema y o nadie sabe la respuesta, o el que la sabe no la quiere soltar. La e buscado en cualquier cantidad de lugares, e intentado colocar librerías como arroz en el classpath pero nada, asi que para esto lo mejor va ser contratar a un experto que lo resuelva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema empleando JPA

Publicado por daltonm (1 intervención) el 10/09/2008 22:24:23
Las cosas que se me ocurren revisar ...

El archivo persistence.xml lo creaste a mano o con el asistente ?

El driver para la DB es el correcto?
esta en el lugar de las libs?

Saludos DaltonM
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema empleando JPA

Publicado por Eduardo (2 intervenciones) el 14/03/2009 22:56:36
Tuve un problema parecido al que comentan y era provocado por una importación incorrecta de paquetes. (Supongo alguna colisión o problema con Eclipse)

- Primero les paso la linea del provider del persistence.xml:
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
o
<provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>

- Segundo me di cuenta que mi codigo funcionaba en NetBeans y NO en Eclipse, asi que ahi me fije las diferencias y volé las importaciones adicionales que me agregaba Eclipse de forma predeterminada. En mi caso, utilizando Eclipse al crear un proyecto JPA se me agregaban:
- EAR Libraries
- GlassFish v2.1 Java EE5
Como les comentaba, quite estas importaciones y salio andando todo joya :)

Espero les sirva,

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema empleando JPA

Publicado por Eduardo (2 intervenciones) el 14/03/2009 23:01:50
Permitanme corregirme, el problema no fue parecido... sino exactamente el mismo que plantean.

Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema empleando JPA

Publicado por juan (1 intervención) el 05/05/2010 06:29:28
Hola todos. a mi me pasa exactamente lo mismo. no se que puede ser he probado instalando de nuevo, dsitintas versiones, haciendo la UP a mano, con el asistente, importando librerias a mano, etc. alguien lo pudo solucionar? desde ya muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar