2012-04-03 1 views
1

JPA 1.0과 함께 WebLogic 10.3을 사용하고 있습니다.WebLogic 10.3 JPA 1.0 클래스에 대한 설명자가 누락되었습니다.

엔티티 클래스는 다음과 같습니다

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

@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에 추가 이 선택 결과를 반환하는 저장 프로 시저입니다.

select t_zone_id as zoneid, t_agency_id as agencyid; 

이 엔티티 클래스는 웹 응용 프로그램 (war 파일)의 종속성으로 사용되는 jar 파일 안에 래핑됩니다. 이 전쟁은 귀 파일 안에 싸서 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

클래스 로더 문제 인 것 같습니다. 내 생각에 오래된 클래스를 가진 오래된 퍼시스턴스 유닛은 여전히 ​​서버에 배치되어 있습니다.

컨테이너 관리 (주입/jta) 지속성 단위를 사용하면 서버가이를 제거합니다.

응용 프로그램 관리 지속성 장치 (Persistence.createEntityManagerFactory())를 사용하는 경우 활성 서버를 다시 배포하기 전에 닫아야합니다. 그렇지 않으면 배포 된 상태로 유지됩니다.

+0

우리는 어플리케이션 관리 영속성 단위'@PersistenceContext (unitName = "OpenXModel")를 사용하고 있습니다. protected EntityManager entityManager; –

+0

당신은 저의 하루를 저장했습니다! (몇 시간 후 반 인터넷 및 가능한 문서를 읽고 여러 번 모든 것을 다시 확인). 공유 WL12c에 배포 중이었고 yestarday 이후 재시작하지 않았습니다. 여기서 내 persistence.xml이 잘못 구성되어 중단 점 디버깅과 테스트가 제대로 이루어지지 않았기 때문에 닫히지 않았습니다. 대단히 감사합니다! – exoddus

관련 문제