java - hacer - Entidades no mapeadas después de moverlas al paquete jar externo
ejecutar jar desde cmd (2)
También verifique si sus asignaciones de hibernación están colocadas correctamente en el archivo de configuración de hibernación. Tenga en cuenta que las clases o los recursos de mapeo de hibernación son relativos a la ubicación del archivo hibernate.cfg.xml.
En mi aplicación Java / Seam / JbossAS, decidí externalizar mis clases de modelo (entidades de hibernación) y las moví a otro proyecto. El proyecto produce model.jar, que luego es utilizado por la aplicación principal. La dependencia model.jar es resuelta por Ivy. La construcción de la aplicación principal con Ant funciona sin problemas. Luego copio manualmente el modelo.jar en el directorio ''mainapp.ear / lib''. Después, despliego la aplicación y no hay problemas (aunque noto que no hay información de registro sobre las asignaciones encontradas). Pero cuando quiero iniciar sesión, obtengo la excepción:
javax.el.ELException: javax.ejb.EJBTransactionRolledbackException:
org.hibernate.hql.ast.QuerySyntaxException: AppUser is not
mapped [select u from AppUser u where u.userName = :usernamePar]
Mientras tanto, no hubo cambios en el código, solo se exteriorizaron algunas de las clases en un contenedor. ¿Significa esto que necesito el código fuente de las clases de modelo al compilar la aplicación principal?
EntityManagerFactory
está diseñado para escanear entidades solo desde el jar que tiene un archivo /META-INF/persistence.xml
en.
Para escanear otros frascos, debe usar <jar-file>
:
<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="manager1" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/DefaultDS</jta-data-source>
<mapping-file>ormap.xml</mapping-file>
<jar-file>MyApp.jar</jar-file>
<class>org.acme.Employee</class>
<class>org.acme.Person</class>
<class>org.acme.Address</class>
<shared-cache-mode>ENABLE_SELECTOVE</shared-cache-mode>
<validation-mode>CALLBACK</validation-mode>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
</persistence-unit>
</persistence>
Ver 2.2.1 Embalaje en Hibernate doc .