2014-01-14 42 views
3

我升級一個項目,從版本1 JAXB 2.2.7。 X。com.sun.istack.SAXException2:實例......被代以「java.lang.Object繼承」,而是......被綁定到一個匿名類型

我已經得到了應用程序的工作一些時間,但對一些迴應我看到這一點:

java.lang.RuntimeException: javax.xml.bind.MarshalException 
- with linked exception: 
[com.sun.istack.SAXException2: Instance of "com.mycompany.global.er.decoupling.binding.response.PricePointType$BalanceImpactRates$BalanceImpactRate" 
is substituting "java.lang.Object", but 
"com.mycompany.global.er.decoupling.binding.response.PricePointType$BalanceImpactRates$BalanceImpactRate" 
is bound to an anonymous type.] 

這JAXB 1.0工作得很好。我不知道問題可能是什麼。

下面是來自XSD的提取物(這是我無法改變,因爲客戶正在使用它):

<xs:complexType name="price-pointType"> 
    <xs:sequence> 
     <xs:element name="id" type="xs:string" /> 
......... 
     <xs:element name="duration" type="durationType" /> 
     <xs:element name="order" type="xs:int" /> 
     <xs:element name="min-sub-period" type="xs:int" /> 
     <xs:element name="balance-impacts" minOccurs="0"> 
      <xs:complexType> 
       <xs:sequence> 
        <xs:element name="balance-impact" type="charging-resourceType" 
         minOccurs="0" maxOccurs="unbounded" /> 
       </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     <xs:element name="balance-impact-rates" minOccurs="0"> 
      <xs:complexType> 
       <xs:sequence> 
        <xs:element name="balance-impact-rate" minOccurs="0" 
         maxOccurs="unbounded"> 
         <xs:complexType> 
          <xs:sequence> 
           <xs:element name="rate" type="xs:double" /> 
          </xs:sequence> 
          <xs:attribute name="charging-resource-code" type="xs:string" 
           use="required" /> 
         </xs:complexType> 
        </xs:element> 
       </xs:sequence> 
      </xs:complexType> 
     </xs:element> 

有什麼建議?

回答

1

的問題竟然是匿名複雜類型的精心築巢。

通過如下他們分離出,問題就走開了。作爲額外的獎勵,我獲得了更多的可重用代碼。

<xs:complexType name="balanceImpactRate"> 
    <xs:sequence> 
     <xs:element name="rate" type="xs:double" /> 
    </xs:sequence> 
    <xs:attribute name="charging-resource-code" type="xs:string" 
    use="required" /> 

</xs:complexType> 


<xs:complexType name="balanceImpactRates" > 
    <xs:sequence> 
     <xs:element name="balance-impact-rate" type="balanceImpactRate" minOccurs="0" 
      maxOccurs="unbounded"> 
     </xs:element> 
    </xs:sequence> 
</xs:complexType> 
1

我試圖元帥,我已經從Hibernate映射-4.0.xsd產生

,正在拋出的異常似乎涉及生成的兩個類的一些JAXB obejcts時相同的異常作爲類HibernateMapping根類的內部類 - 「Id」和「CompositeID」。這兩個元素在XSD中都被定義爲嵌套complexTypes,就像@ mdarwin的情況一樣。通過移動的complexType定義出(以使它們在XSD的「模式」元素的根元素),那麼問題得到解決並且對象被成功地封。但找不到解決此問題的另一種方式 -

,因爲我本來希望已經使用未經修改的XSD生成我JAXB對象的恥辱。

相關問題