JPA Mit Hibernate-Fehler: [PersistenceUnit: JPA] kann Nicht zum erstellen EntityManagerFactory
Ich habe ein problem mit der Java Persistence API und Hibernate.
Meine situation Projekt:
Meine persistence.xml Datei:
<persistence
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_2_0.xsd"
version="2.0">
<persistence-unit name="JPA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.david.Libro</class>
<class>com.david.Categoria</class>
<properties>
<property name="hibernate.show_sql" value="true" />
<property name="javax.persistence.transactionType" value="RESOURCE_LOCAL" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/arquitecturaJava" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="root" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
</properties>
</persistence-unit>
</persistence>
Und ich erstellen EntityManagerFactory in:
private static EntityManagerFactory buildEntityManagerFactory()
{
try
{
return Persistence.createEntityManagerFactory("JPA");
}
catch (Throwable ex)
{
ex.printStackTrace();
//throw new RuntimeException("Error al crear la factoria de JPA:->"+ ex.getMessage());
}
}
Meine Fehler zu erstellen EntityManagerFactory:
javax.persistence.PersistenceException: [PersistenceUnit: JPA] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:924)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:899)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:59)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at com.david.JPAHelper.buildEntityManagerFactory(JPAHelper.java:14)
at com.david.JPAHelper.<clinit>(JPAHelper.java:8)
at com.david.Categoria.buscarTodos(Categoria.java:93)
at com.david.FormularioInsertarLibroAccion.ejecutar(FormularioInsertarLibroAccion.java:25)
at com.david.ControladorLibros.doGet(ControladorLibros.java:38)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping com.david.Libro
at org.hibernate.cfg.Configuration$MappingsImpl.addClass(Configuration.java:2638)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:706)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3512)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3466)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1355)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1756)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
... 27 more
Teil von Libro und Categoria Klassen-code ist:
@Entity
@Table(name = "Categorias")
public class Categoria implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@JoinColumn(name = "categoria")
private String id;
private String descripcion;
....
und
@Entity
@Table(name="Libros")
public class Libro implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
private String isbn;
private String titulo;
@ManyToOne
@JoinColumn (name="categoria")
private Categoria categoria;
....
Meine Datei von Hibernate-Konfiguration ist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/arquitecturajava</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.pool_size">5</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="show_sql">true</property>
<mapping class="com.david.Categoria"></mapping>
<mapping class="com.david.Libro"></mapping>
</session-factory>
</hibernate-configuration>
Irgendwelche Ideen!!
Danke!!
Wenn erneute auslösen einer Ausnahme, es ist mehr nützlich, wenn Sie die ursprüngliche Ausnahme als eine geschachtelte Ausnahme, so dass die ursprünglichen stacktrace können geprüft werden:
Bevor man eine neue RuntimeException, drucken Sie den stacktrace mit
Sie sollten nicht fangen überhaupt nichts. Wenn die Erstellung der
Ich habe geändert, die show der Fehler mit PrintOfTrace. Aber ist das gleiche ich weiß nicht, wie lösen Sie diesen Fehler.
Dein Fehler ist:
new RuntimeException("my message", ex)
Bevor man eine neue RuntimeException, drucken Sie den stacktrace mit
ex.printStackTrace();
oder Verwendung der (besseren) Strategie kommentiert von @SJuan76.Sie sollten nicht fangen überhaupt nichts. Wenn die Erstellung der
EntityManagerFactory
fehlschlägt, können Sie nicht wiederherstellen sowieso.Ich habe geändert, die show der Fehler mit PrintOfTrace. Aber ist das gleiche ich weiß nicht, wie lösen Sie diesen Fehler.
Dein Fehler ist:
DuplicateMappingException: Duplicate class/entity mapping com.david.Libro
, wie gezeigt durch die Linie Caused by
in Ihren stacktrace.InformationsquelleAutor Davidin073 | 2013-06-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht beide
hibernate.cfg.xml
undpersistence.xml
in diesem Fall. Haben Sie versucht, entfernenhibernate.cfg.xml
- und mapping-alles inpersistence.xml
nur?Aber wie die anderen Antworten auch darauf hingewiesen, das ist nicht okay so:
Nicht, die Sie verwenden möchten
@Column
statt?Für die andere Seite, wenn ich nicht löschen hibernate.cfg.xml und die Kommentar-links in den Klassen persistence.xml der Fehler "Transaktion ist nicht aktiv"
Haben Sie einen Blick auf diese post, wie gut: stackoverflow.com/questions/3807503/... Sie brauchen nicht beides. Sie sollten gehen Sie mit Ihrem persistence.xml. Aber vielleicht ist es nicht richtig konfiguriert ist! Aber die Frage war wegen dem, was ich Ihnen sagte, dass ich denke 🙂
Ok, ein Teil von Hibernate ist wahr. Seine notwendig, löschen hibernate.cfg.xml. Aber mein Fehler: "javax.die Persistenz.PersistenceException: [PersistenceUnit: JPA] kann Nicht zum erstellen EntityManagerFactory" und "Doppelte Klasse/entity-mapping-com.david.Libro" nicht lösen...
Endlich gefunden!! Unterdrücken hibernate.cfg.xml und hbm-Dateien aber nicht löschen @JoinColumn-Annotationen. Danke!!
InformationsquelleAutor Balázs Németh
Unterdrücken die
@JoinColumn(name="categoria")
auf das ID-Feld derCategoria
Klasse und ich denke, es wird funktionieren.Nach löschen hibernate.cfg.xml und löschen @JoinColumn annotation od Categoria, die Fehlermeldung " org.hibernate.DuplicateMappingException: Doppelte Klasse/entity-mapping-com.david.Libro"...ich weiß nicht warum..
InformationsquelleAutor eternay
Oben verwenden Anmerkung, wenn jemand vor :--org.hibernate.jpa.HibernatePersistenceProvider Persistenz-provider, wenn es versucht, die container entity-manager-factory für die paymentenginePU persistenzeinheit. Der folgende Fehler ist aufgetreten: [PersistenceUnit: paymentenginePU] kann Nicht zum erstellen der Hibernate SessionFactory
** Dies ist eine Lösung, wenn Sie mit Audit table.@Audit
Verwenden:- @Geprüften(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED) auf Superklasse.
InformationsquelleAutor Vinit Bhardwaj