次のクラスがあるとします。
@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 ナイトリー ビルドを使用しています。