2014-03-26 44 views
0

我有一個類層次結構,其基類名爲EntityModel,以及兩個類InvestorModelAgentModel,它們都直接從它繼承並添加了一些屬性。然後,我創建Mule數據映射,將JSON映射到每個子類。Mule DataMapper IOException

InvestorModel地圖工作正常,但AgentModel地圖失敗(在IDE預覽)與IOException說,它不能實例EntityModel。這看起來很奇怪,因爲它可以在InvestorModel地圖中實例化它。我發佈的錯誤,但我真的沒有任何來源發佈,因爲這些只是映射文件。我只是不知道從哪裏開始尋找。

騾Studio是最新的,並且V3.5.0

java.io.IOException: org.jetel.exception.JetelException: za.co.sci.core.shared.EntityModel can not be instantiated. 
    at org.jetel.component.tree.writer.TreeFormatter.write(TreeFormatter.java:72) 
    at org.jetel.util.MultiFileWriter.writeRecord2CurrentTarget(MultiFileWriter.java:420) 
    at org.jetel.util.MultiFileWriter.write(MultiFileWriter.java:297) 
    at org.jetel.component.TreeWriter.execute(TreeWriter.java:464) 
    at org.jetel.graph.Node.run(Node.java:465) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:744) 
Caused by: org.jetel.exception.JetelException: za.co.sci.core.shared.EntityModel can not be instantiated. 
    at com.opensys.cloveretl.component.tree.writer.bean.BeanWriter.a(Unknown Source) 
    at com.opensys.cloveretl.component.tree.writer.bean.BeanWriter.a(Unknown Source) 
    at com.opensys.cloveretl.component.tree.writer.bean.BeanWriter.a(Unknown Source) 
    at com.opensys.cloveretl.component.tree.writer.bean.BeanWriter.writeStartNode(Unknown Source) 
    at org.jetel.component.tree.writer.model.runtime.WritableObject.writeContent(WritableObject.java:67) 
    at org.jetel.component.tree.writer.model.runtime.WritableContainer.write(WritableContainer.java:67) 
    at org.jetel.component.tree.writer.model.runtime.WritableObject.writeContent(WritableObject.java:77) 
    at org.jetel.component.tree.writer.model.runtime.WritableContainer.write(WritableContainer.java:67) 
    at org.jetel.component.tree.writer.model.runtime.WritableObject.writeContent(WritableObject.java:77) 
    at org.jetel.component.tree.writer.model.runtime.WritableContainer.write(WritableContainer.java:67) 
    at org.jetel.component.tree.writer.model.runtime.WritableObject.writeContent(WritableObject.java:77) 
    at org.jetel.component.tree.writer.model.runtime.WritableContainer.write(WritableContainer.java:67) 
    at org.jetel.component.tree.writer.model.runtime.WritableObject.writeContent(WritableObject.java:77) 
    at org.jetel.component.tree.writer.TreeFormatter.write(TreeFormatter.java:69) 
    ... 7 more 

類片段:

public abstract class EntityModel implements Serializable { 
    protected Long id; 
    private long entityNumber; 
    private EntityStatus status; 
    private String entityName; 
... 

public class AgentModel extends EntityModel implements Serializable{ 
    private int agentCode; 
    private AgentType agentType; 
    private AgentClass agentClass; 
... 

public class InvestorModel extends EntityModel implements Serializable { 
    private boolean blockedRand; 
    private String utAUTType; 
... 
+0

你能發佈失敗類的片段嗎? –

回答

0

原來的誤差是由於基類是抽象的。真的很明顯。

一個地圖工作的原因,但沒有另一個是因爲字段的順序。映射到InvestorModel上的第一個字段是在InvestorModel中定義的字段,因此映射器知道實例化哪個類。在AgentModel映射上,第一個字段在抽象類EntityModel上定義,所以映射器試圖實例化該類,但失敗了,我沒有選擇AgentModel作爲目標。

相關問題