2011-01-18 15 views
5

Tengo el siguiente en persistence.xmlhibernación pruebas unitarias JPA autodection no funciona

<persistence-unit name="test" transaction-type="RESOURCE_LOCAL"> 
    <class>com.merc.model.log.EventLogging</class> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode> 
    <properties> 
     <!-- Scan for annotated classes and Hibernate mapping XML files --> 
     <property name="hibernate.archive.autodetection" value="class"/> 
    </properties> 
</persistence-unit> 

Si comento hacia fuera com.merc.model.log.EventLogging, consigo una excepción desconocida entidad.

¿Alguna idea de por qué la autodetección no funcionaría

Respuesta

13

Esto puede ser causado por el hecho de que, por defecto detección automática funciona para las clases dentro del mismo artículo ruta de clases, donde se encuentra persistence.xml.

Por lo tanto, tiene carpetas de destino separadas para el código y para las pruebas (por ejemplo, si usa Maven con configuración predeterminada), y si persistence.xml termina en la carpeta de destino de las pruebas después de la compilación, las clases de la carpeta de destino no sería detectada.

Puede usar elementos <jar-file> para señalar otros elementos de classpath que se deben buscar entidades.

Si utiliza Maven, puede hacerlo de forma elegante mediante el filtrado de recursos:

persistence.xml:

<jar-file>${project.build.outputDirectory}</jar-file> 

pom.xml:

<build> 
    <testResources> 
     <testResource> 
      <directory>src/test/resources</directory> 
      <filtering>true</filtering> 
     </testResource> 
    </testResources> 
</build> 
+0

Gracias por la ayuda y explicación – user373201

+0

I intenté con lo que mencionaste, pero ahora recibo el siguiente error. Estoy usando maven e intento ejecutar una prueba de unidad. No puedo analizar la unidad de persistencia desde la URL [file: /media/01CBC9CAC704E03A0/Projects/spring/hibernate/genericdao/target/test-classes/META-INF/persistence.xml] – user373201

+0

@ user373201: comprueba cómo se ve esta 'persistence.xml' después de la compilación. ¿Ha resuelto Maven el marcador de posición? – axtavt