2012-04-03 5 views
1

Ich verwende WebLogic 10.3 mit JPA 1.0.WebLogic 10.3 JPA 1.0 Fehlender Deskriptor für Klasse

Die Entity-Klasse ist:

@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; 
} 

Es ist auch in persistence.xml hinzugefügt:

<?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> 

Ich benutze diese Klasse in dem folgenden Aufruf:

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

wo get_zone_agency_by_channel_type_rr ist eine gespeicherte Prozedur, die das Ergebnis dieser Auswahl zurückgibt:

Diese Entitätsklasse ist in eine JAR-Datei eingebettet, die als Abhängigkeit in einer Webanwendung (WAR-Datei) verwendet wird. Dieser Krieg wird in eine Ear-Datei verpackt und auf WebLogic bereitgestellt. Das Problem ist, dass Wenn ich die Bereitstellung installiere/aktualisiere, funktioniert der Aufruf von entityManager.createNativeQuery einwandfrei. wenn ich die Web-Anwendung zu beenden und dann neu starten, erhalte ich folgende Fehlermeldung:

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

Was könnte das Problem sein?

Antwort

1

Es scheint ein Klassenladerproblem zu sein. Meine Vermutung ist, dass die alte Persistenzeinheit mit den alten Klassen noch auf dem Server implementiert ist.

Wenn Sie eine containerverwaltete (injizierte/jta) Persistenzeinheit verwenden, kümmert sich der Server darum, sie zu deimplementieren.

Wenn Sie eine durch eine Anwendung verwaltete Persistenzeinheit verwenden (Persistence.createEntityManagerFactory()), müssen Sie sicherstellen, dass Sie sie schließen, bevor Sie einen Live-Server erneut bereitstellen. Ansonsten bleibt es im Einsatz.

+0

Wir verwenden eine applikationsverwaltete Persistenzeinheit '@PersistenceContext (unitName =" OpenXModel ") geschützter EntityManager entityManager;' –

+0

Sie haben meinen Tag gerettet! (Nach Stunden lesen Halb-Internet und mögliche Dokumentationen und überprüfen Sie alles mehrmals). Ich habe in einem freigegebenen WL12c bereitgestellt und seit gestern nicht mehr neu gestartet, wo meine persistence.xml falsch erstellt wurde und nicht ordnungsgemäß geschlossen wurde, da Breakpoints und Tests debuggen. Vielen Dank, Männer! – exoddus

Verwandte Themen