WebLogic 10.3 JPA 1.0 Отсутствует дескриптор для класса - PullRequest
1 голос
/ 03 апреля 2012

Я использую WebLogic 10.3 с JPA 1.0.

Класс сущности:

@Entity
public class ZoneAgency implements Serializable {

   public ZoneAgency() {
      super();
   }

   @Id
   @Column(name = "zoneid", nullable = false)
   private Integer zoneId;

   @Id
   @Column(name = "agencyid", nullable = false)
   private Integer agencyId;
}

Он также добавлен в persistence.xml:

<?xml version="1.0" encoding="windows-1252" ?>
<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="smthModel">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/smthDS</jta-data-source>
    <class>smth.model.entities.ZoneAgency</class>
    <properties>
      <property name="eclipselink.target-server" value="WebLogic_10"/>
      <property name="javax.persistence.jtaDataSource" value="jdbc/smthDS"/>
      <property name="eclipselink.cache.shared.default" value="false"/>
    </properties>
  </persistence-unit>
</persistence>

Я использую этот класс в следующем вызове:

Query query = entityManager.createNativeQuery("call get_zone_agency_by_channel_type_rr(?,?)", ZoneAgency.class);

, где get_zone_agency_by_channel_type_rr - это хранимая процедура, которая возвращает результат этого выбора:

select t_zone_id as zoneid, t_agency_id as agencyid;

Этот класс сущности обернут внутри флягифайл, используемый в качестве зависимости в веб-приложении (файл war).Эта война заключена в файл ear и развернута в WebLogic.

Проблема заключается в том, что при установке / обновлении развертывания вызов entityManager.createNativeQuery работает нормально;Когда я останавливаю веб-приложение и затем перезапускаю его, я получаю следующую ошибку:

Exception Description: Missing descriptor for [class smth.model.entities.ZoneAgency].
Query: ReadAllQuery(referenceClass=ZoneAgency sql="call get_zone_agency_by_channel_type_rr(?,?)")

В чем может быть проблема?

1 Ответ

1 голос
/ 03 апреля 2012

Кажется, это проблема загрузчика классов.Я предполагаю, что старый блок персистентности со старыми классами все еще развернут на сервере.

Когда вы используете блок персистентности, управляемый контейнером (injected / jta), сервер позаботится о его развертывании.

Когда вы используете управляемый модулем персистентности приложения (Persistence.createEntityManagerFactory ()), вы должны убедиться, что закрыли его перед повторным развертыванием действующего сервера.В противном случае он останется развернутым.

...