2012-04-03 44 views
1

我使用的WebLogic 10.3 JPA 1.0。的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; 

該實體類被封裝在用作Web應用程序(war文件)中的依賴項的jar文件中。這場戰爭被封裝在ear文件中並部署在WebLogic上。

的問題是, 當我安裝/升級的部署中,entityManager.createNativeQuery調用工作正常; 當我停止Web應用程序,然後重新啓動它,我收到以下錯誤:

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」) 受保護的EntityManager entityManager;' – 2012-05-02 11:58:05

+0

您節省了我的一天! (在半小時後讀取半互聯網和可能的文件並重複檢查所有內容)。我正在部署一個共享的WL12c,並且自從yestarday以來沒有重新啓動,因爲我的persistence.xml被錯誤地構建,並且沒有正確關閉,因爲它正在調試斷點和測試。非常感謝你們! – exoddus 2017-05-04 11:38:34