2014-03-26 1 views
0

기본 클래스가 EntityModel 인 클래스 계층 구조와 각각이 직접 상속 받고 몇 가지 속성을 추가하는 두 클래스 InvestorModelAgentModel이 있습니다. 그런 다음 JSON을 각 하위 클래스에 개별적으로 매핑하는 Mule 데이터 맵을 만듭니다.Mule DataMapper IOException

InvestorModel지도 잘 작동하지만, AgentModel지도는 EntityModel를 인스턴스화 할 수 없다는 IOException과 함께합니다 (IDE 미리보기에서) 실패합니다. 이것은 InvestorModel 맵에서 인스턴스화 할 수 있으므로 이상하게 보입니다. 나는 오류를 게시하지만, 실제로는 매핑 파일 일 뿐이므로 게시 할 소스가 없습니다. 나는 어디서부터 시작해야할지 모르겠습니다.

뮬 스튜디오 날짜와 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을 선택하지 않아도됩니다.