给定以下课程:
@XmlSeeAlso({A.class, B.class})
@XmlDiscriminatorNode("@type")
public abstract class Base implements Serializable {
}
让A
(和类似的B
)是:
@XmlDiscriminatorValue("A")
public class A extends Base {
private String foo;
// constructor, getter, setter
}
包装List<Base>
这两种类型的包含对象将导致此示例 JSON:
{
"list": [
{
"@type": "A",
"bar": 123
},
{
"@type": "A",
"bar": 789
},
{
"@type": "B",
"foo": "sddadad"
},
{
"@type": "B",
"foo": "ttf4eg4gf sd"
},
{
"@type": "A",
"bar": 465
}
]
}
现在到我的问题开始的部分:当@type
属性从“第一”位置移开时,解组失败:
{
"bar" : 123,
"@type" : "A"
}
Exception Description: Missing class indicator field from database row [UnmarshalRecordImpl()].
这是预期的行为吗?我必须确保@type
声明始终是“第一”吗?
我正在使用 EclipseLink 2.5.1.v20130619-ffd088c 每晚构建。