Объекты не отображаются после перемещения их во внешний пакет jar - PullRequest
8 голосов
/ 17 мая 2011

В моем приложении Java / Seam / JbossAS я решил вывести свои классы Model (спящие сущности) и перенести их в другой проект. Проект создает файл model.jar, который затем используется основным приложением. Зависимость model.jar разрешена Ivy. Сборка основного приложения с помощью Ant работает без проблем. Затем я вручную копирую model.jar в каталог 'mainapp.ear / lib'. После этого я развертываю приложение, и проблем не возникает (хотя я замечаю, что в журналах нет сведений о найденных сопоставлениях). Но когда я хочу войти, я получаю исключение:

javax.el.ELException: javax.ejb.EJBTransactionRolledbackException:
    org.hibernate.hql.ast.QuerySyntaxException: AppUser is not
    mapped [select u from AppUser u where u.userName = :usernamePar]

Между тем не было никаких изменений кода, только вывод некоторых классов в банку. Означает ли это, что мне нужен исходный код классов Model при компиляции основного приложения?

Ответы [ 2 ]

5 голосов
/ 19 мая 2011

EntityManagerFactory создан для сканирования объектов только из банки с файлом /META-INF/persistence.xml в.

Для сканирования других банок необходимо использовать <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>

См. 2.2.1 Упаковка в Hibernate doc .

0 голосов
/ 18 мая 2011

Также проверьте, правильно ли размещены сопоставления вашего спящего режима в конфигурационном файле спящего режима.Обратите внимание, что ресурсы или классы отображения hibernate относятся к расположению файла hibernate.cfg.xml.

...