gpt4 book ai didi

java - @jsonbackreference 不绑定(bind)关系

转载 作者:行者123 更新时间:2023-11-30 10:46:22 25 4
gpt4 key购买 nike

我有两个类:

人.java:

@Entity
@PrimaryKeyJoinColumn(name="owner_id")
public class Person extends Owner {

@ManyToOne
@JoinColumn(name = "car_sharing_id")
@JsonBackReference
private CarSharing carSharing;
}

汽车共享.java:

@Entity
public class CarSharing extends MetadataEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@OneToOne
@JoinColumn(name = "owner_id", nullable = false)
@NotNull
private Person owner;

@OneToMany(mappedBy = "carSharing", cascade = CascadeType.ALL)
@Valid
private Set<Person> members;
}

我正在使用 @JsonBackReference 来避免无限循环。 CarSharing 类工作正常,问题只发生在 Person 类。

获取人员似乎忽略了 carSharing 属性。由于它在返回到服务器时为 null,因此更新取消了对 person 表中 carsharing_id 的引用的链接。

停止循环很好,但我还需要 Person 类中可用的 carSharing

知道如何解决这个问题吗?

最佳答案

如果您使用的是 Jackson 2.x,则可以使用注解 @JsonIdentityInfo:

Whether Object Identity information is to be used for determining how to serialize/deserialize property value to/from JSON (and other data formats) will be based on existence (or lack thereof) of @JsonIdentityInfo annotation.
see: http://wiki.fasterxml.com/JacksonFeatureObjectIdentity

例如,如果您注释类 CarSharing:

import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
//...
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")
public class CarSharing {

一个人(我给这个类加了字段名)的JSON结果是:

  {
"carSharing": {
"@id": 1,
"id": 12345,
"owner": {
"carSharing": 1,
"name": "owner"
},
"members": [
{
"carSharing": 1,
"name": "owner"
},
{
"carSharing": 1,
"name": "driver2"
},
{
"carSharing": 1,
"name": "driver"
}
]
},
"name": "driver2"
}

还有一个带有 id=12345 的 CarSharing 实例:

  {
"@id": 1,
"id": 12345,
"owner": {
"carSharing": 1,
"name": "owner"
},
"members": [
{
"carSharing": 1,
"name": "owner"
},
{
"carSharing": 1,
"name": "driver2"
},
{
"carSharing": 1,
"name": "driver"
}
]
}

字段 @id 是从 jackson 生成的。如果引用对象未序列化,则该值设置为引用对象的@id

关于java - @jsonbackreference 不绑定(bind)关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36566865/

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