【问题标题】:Mule DataMapper IOExceptionMule DataMapper IOException
【发布时间】:2014-03-26 05:32:55
【问题描述】:

我有一个类层次结构,其中有一个名为EntityModel 的基类,以及两个类InvestorModelAgentModel,每个类都直接继承自它并添加了一些属性。然后,我正在创建 Mule 数据映射以将 JSON 分别映射到每个子类。

InvestorModel 映射工作正常,但 AgentModel 映射失败(在 IDE 预览中),IOException 表明它无法实例化 EntityModel。这看起来很奇怪,因为它可以在 InvestorModel 映射中实例化它。我发布了错误,但我真的没有任何来源可以发布,因为这些只是映射文件。我只是不知道从哪里开始寻找。

Mule 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

类 sn-ps:

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;
...

【问题讨论】:

  • 你能发布一个失败类的sn-p吗?

标签: mule mule-studio


【解决方案1】:

原来错误是由于基类是抽象的。真的有点明显。

一张地图有效,而另一张无效的原因是因为字段的顺序。在InvestorModel 上映射的第一个字段是在InvestorModel 中定义的字段,因此映射器知道要实例化哪个类。在AgentModel 映射上,第一个字段是在抽象类EntityModel 上定义的,因此映射器尝试实例化该类,但失败了,我选择AgentModel 作为目标并不重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多