2014-09-10 37 views
0

蓖麻試圖馬歇爾我的對象到XML和扔錯誤,指出「向前引用,不支持」 我有3個Java類蓖麻錯誤:向前引用不supprted

public class RandomTransactionRequest extends TransactionRequest { 
    public RandomTransactionRequest() { super("location") } 
} 

public class TransactionRequest extends ServiceRequest { 
    private StatusObject status; 
    public TransactionRequest (String destination) { 
     setDestination(destination); 
    } 
} 

public class ServiceRequest { 
    private String destination; 
    public String getDestination(){ return destination; } 
    public void setDestination(String destination) { this.destination = destination; } 
} 

我期待XML看起來像以下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<REQUEST> 
    <DEST>location</DEST> 
    <STATUS_FIELDS> 
    <STATUS> 
     <INIT_STAT>incomplete</INIT_STAT> 
     <FIN_STAT>complete</FIN_STAT> 
    </STATUS> 
    </STATUS_FIELDS> 
</REQUEST> 

我給A類蓖麻映射看上去像以下:

<?xml version="1.0" encoding="UTF-8"?> 
<mapping> 
    <class name="com.package.requests.RandomTransactionRequest" extends="com.package.requests.TransactionRequest"> 
    <map-to xml="REQUEST"/> 
</class> 
<class name="com.package.requests.TransactionRequest" extends="com.package.requests.ServiceRequest"> 
    <field name="status" type="com.package.objects.StatusObject"> 
     <bind-xml name="STATUS" location="APP"/> 
    </field> 
</class> 
<class name="com.package.requests.ServiceRequest" > 
    <field name="destination" type="java.lang.String"> 
     <bind-xml name="DEST" /> 
    </field> 
</class> 
<class name="com.package.objects.StatusObject" > 
    <field name="initialStatus" type="java.lang.String"> 
     <bind-xml name="INIT_STAT"/> 
    </field> 
    <field name="finalStatus" type="java.lang.String"> 
     <bind-xml name="FIN_STAT"/> 
    </field> 
</class> 
</mapping> 

收到的錯誤:

No class descriptor found for extended class [email protected] in class com.package.requests.RandomTransactionRequest -- forward references are not supported

回答

0

我缺的是添加默認的構造TransactionRequest。 Castor需要能夠實例化你正在映射的類,並且需要一個默認的構造函數來完成。

我的最後一節課是這樣的:

public class TransactionRequest extends ServiceRequest { 
    private StatusObject status; 

    public TransactionRequest() {} /* NEEDED DEFAULT CONSTRUCTOR */ 

    public TransactionRequest (String destination) { 
     setDestination(destination); 
    } 
}