尝试使用@JsonIdentityInfo jackson批注时出现错误。当我尝试反序列化对象时,出现以下异常:

我尝试反序列化的JSON看起来像:

{
"@Site": 1,
"siteId": 1,
"name": "0",
"address": {
    "@Address": 2,
    "addressId": 4,
    "number": "22"
},
"operators": [
    {
        "accountId": 1,
        "email": "[email protected]",
        "image": {
            "@Image": 1,
            "imageId": 1,
            "uri": "http://icons.iconarchive.com/icons/deleket/purple-monsters/128/Alien-awake-icon.png"
        }
    },
    {
        "accountId": 2,
        "email": "[email protected]",
        "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注释会出现问题,因为如果删除注释,问题就会消失(就像我为帐户所做的一样),但是据我了解,新功能对于循环依赖项很有用,在其他情况下对我很有用。由于这两个图像是不同的对象,因此它们之间不应存在冲突。
我该如何解决这个问题?

最佳答案

注释ID时,应使用scope参数。然后,反序列化器将确保ID在范围内是唯一的。

从注释类型JsonIdentityInfo:



例如

@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class,property="@id", scope = Account.class)

10-08 07:01