gpt4 book ai didi

java - 如何将@JsonIdentityInfo与复合PK一起使用?

转载 作者:行者123 更新时间:2023-11-30 02:29:56 40 4
gpt4 key购买 nike

如果我有一个带有单个 @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。

最佳答案

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

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

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

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

@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "pk")
public String getPk() {
return x + "->" + y;
}

@JsonIgnore
public int getX() {
return x + "->" + y;
}

// @JsonIgnore on all individual properties that make pk
}

关于java - 如何将@JsonIdentityInfo与复合PK一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44555285/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com