23

@JsonIdentityInfo jackson アノテーションを操作しようとするとエラーが発生します。オブジェクトを逆シリアル化しようとすると、次の例外が発生します。

JSON を読み取れませんでした: ID (java.lang.Integer) [1] の POJO が既にありました (参照チェーンを介して: eu.cobiz.web.domain.Site["operators"]->eu.yavix.web.domain.Account ["image"]->eu.cobiz.web.domain.Image["@Image"]);ネストされた例外はcom.fasterxml.jackson.databind.JsonMappingExceptionです: ID (java.lang.Integer) の POJO が既にあります [ 1] (参照チェーン経由: eu.yavix.web.domain.Site["operators"]->eu.cobiz.web.domain.Account["image"]->eu.cobiz.web.domain.Image[" @画像"])

逆シリアル化しようとしている JSON は次のようになります。

{
"@Site": 1,
"siteId": 1,
"name": "0",
"address": {
    "@Address": 2,
    "addressId": 4,
    "number": "22"
},
"operators": [
    {
        "accountId": 1,
        "email": "user982701361@yavix.eu",
        "image": {
            "@Image": 1,
            "imageId": 1,
            "uri": "http://icons.iconarchive.com/icons/deleket/purple-monsters/128/Alien-awake-icon.png"
        }
    },
    {
        "accountId": 2,
        "email": "user174967957@yavix.eu",
        "image": {
            "@Image": 2,
            "imageId": 2,
            "uri": "http://icons.iconarchive.com/icons/deleket/purple-monsters/128/Alien-awake-icon.png"
        }
    }
]
}

ドメイン オブジェクトに注釈が付けられている

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@Image")

@Id アノテーションで問題が発生するのは、アノテーションを削除すると (アカウントの場合と同様に) 問題が消えるためです。2 つの画像は異なるオブジェクトであるため、競合することはありません。

これを解決するにはどうすればよいですか、それとも何が問題なのですか?

4

2 に答える 2