2012-02-03 11 views
6

Como se indicó sobre el tema, mi problema es el EntityManagerFactory no se puede construir. Estoy usando Maven + Hibernate. Me estoy conectando a una base de datos MySQL (<jdbc://mysql://localhost:3306/<dbname>).[PersistenceUnit: <name>]: no se puede construir EntityManagerFactory

Lo raro aquí es durante la depuración en Eclipse, está funcionando bien. Pero cuando lo construyo usando la construcción de Maven, el archivo JAR arroja tal error. Revisé el archivo Manifest ya y todos los JAR necesarios se incluyeron en el Class-Path. A continuación se muestra el error del JAR muestra en la consola:

================================== =========================================

Feb 3, 2012 5:01:16 PM org.hibernate.annotations.common.Version <clinit> 
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final} 
Feb 3, 2012 5:01:16 PM org.hibernate.Version logVersion 
INFO: HHH000412: Hibernate Core {4.0.1.Final} 
Feb 3, 2012 5:01:16 PM org.hibernate.cfg.Environment <clinit> 
INFO: HHH000206: hibernate.properties not found 
Feb 3, 2012 5:01:16 PM org.hibernate.cfg.Environment buildBytecodeProvider 
INFO: HHH000021: Bytecode provider name : javassist 
Feb 3, 2012 5:01:16 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!) 
Feb 3, 2012 5:01:16 PM class <name>.<name>.<name> <name> 
SEVERE: [ERROR]: [PersistenceUnit: <name>] Unable to build EntityManagerFactory 
[ERROR]: [PersistenceUnit: <name>] Unable to build EntityManagerFactory 

== =============================================== =======================

a continuación es mi persistence.xml:

<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_1_0.xsd" 
version="1.0"> 
<persistence-unit name="<name>"> 
<provider>org.hibernate.ejb.HibernatePersistence</provider> 
<class>classname</class> 
<properties> 
<!-- <property name="hibernate.ejb.cfgfile" value="/classifyPE.cfg.xml"/> --> 
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> 
<property name="hibernate.connection.password" value="<value>" /> 
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/<name>" /> 
<property name="hibernate.connection.username" value="root" /> 
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
</properties> 
</persistence-unit> 
</persistence> 

========= =============================================== ================

¿Qué estoy haciendo mal aquí? ¿O qué me falta?
Como se mencionó, está funcionando en Debug. Pero cuando lo paquete en JAR, (con todos los JAR necesarios presentes en la carpeta libs), no lo es.

+1

Creo que hay más que eso en su derecho de la consola? ¿Tal vez un rastro de pila detallado? – tartak

+1

Debe haber más registros debajo de la versión especificada, publíquelos –

Respuesta

0

Se supone que el archivo persistence.xml va en la carpeta META-INF en la raíz del contenedor. Verifique si está allí o no. Estoy adivinando que esto es puramente un tema relacionado con el camino de clases.

+0

Sí, ya está en la carpeta META-INF ... junto con el archivo de manifiesto – jaysonpryde

0

Intente cambiar el nombre de su unidad de persistencia. Esto es importante, ya que el nombre se usa para identificar la unidad de persistencia relacionada con cada EntityManager.

Así:

<persistence-unit name="<name>"> 

debe sustituirse con (por ejemplo):

<persistence-unit name="myUnit"> 
+0

Haga lo mismo con '' para la contraseña de BD. –

+2

Esas son solo unidades ficticias ... No publiqué el nombre/valor real, pero ya lo ha especificado – jaysonpryde

2

<class>classname</class>

que sospecha que su entidad no se nombra nombre de clase, por lo intente especificar el nombre de ruta de clase completo (por ejemplo, foo.bar.realclassname con realclassna yo soy el nombre de tu entidad-clase).

+0

Lo he especificado correctamente/completamente ... Sigue apareciendo el error – jaysonpryde

+0

Son sus parámetros de base de datos (también conocido como usuario, contraseña y etc.) codificado en persistence.xml o ¿usa algún marcador de posición? Lo que quiero decir es: ¿estás seguro de que se usan los mismos parámetros? – AlexS

+0

Sí, están codificados en la persistencia.xml ... – jaysonpryde

3

añadir esto en su archivo XML

<property name="javax.persistence.validation.mode">none</property> 
Cuestiones relacionadas