如何在复合PK中使用@JsonIdentityInfo?

时间:2017-06-14 21:49:15

标签: java jpa jackson

如果我有一个包含@Id字段的课程,我可以像这样使用@JsonIdentityInfo

@Entity
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
class Example {

    @Id
    int id;
    // getter setter
}

但如果我有一个复合PK类:

@Entity
@IdClass(value = PointID.class)
public class Point {

    @Id
    private int x;
    @Id
    private int y;
}

@SuppressWarnings("serial")
class PointID  implements Serializable {
    int x, y;
}

如何使用注释?在上面的例子中,用法将是这样的

Point p = new Point(1,1);
object1.setPoint(p);
object2.setPoint(p);
bigObject.add(object1, object2);

当我序列化bigObject时,我不想重复点数据,但使用其ID与第一个示例一样。

2 个答案:

答案 0 :(得分:1)

我搜索了Jackson文档和源代码,但找不到对由多个属性组成的object-id的支持。

所以我的建议是在getter方法中创建这样一个复合键:

Protractor 5.1.2

答案 1 :(得分:1)

根据我的尝试和在线研究,似乎@JsonIdentityInfo不适用于复合PK。