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.
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


0