【发布时间】:2016-05-02 04:58:01
【问题描述】:
我有以下关系:
我正在尝试在 Spring Boot 中使用 JPA 映射这些关系,但我遇到了一些麻烦。这些是类:
人物:
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// Relations
@OneToOne
@JoinColumn(name = "child_id")
private PersonBirth birth;
@OneToMany
@JoinColumn(name = "mother_id")
private List<PersonBirth> motherOf;
@OneToMany
@JoinColumn(name = "father_id")
private List<PersonBirth> fatherOf;
}
人物出生:
public class Birth {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "birth_date")
@JsonProperty(value = "birth_date")
private Long birthDate;
// Relations
@OneToOne
@JoinColumn(name = "child_id")
private Person child;
@ManyToOne
@JoinColumn(name = "mother_id")
private Person mother;
@ManyToOne
@JoinColumn(name = "father_id")
private Person father;
}
我正在尝试获取Pearson 和他的Birth 数据,包括他的mother 和father。并且还可以得到一个Person,其子代由fatherOf 或motherOf 映射。但是现在的方式是,当我获取一个母亲的Person 时,它会抛出stackoverflow,因为它获取了包含child 数据的Birth 数据(到目前为止我想要的),其中包含他的Birth 数据,包含他的母亲,包含她的孩子(等等)。我不知道我正在尝试做的事情是否可以使用这种结构,或者我是否必须改变它......任何建议都表示赞赏。
【问题讨论】:
-
@JsonIgnore与 JPA 没有任何关系。因此,请更详细地说明您的问题。一般来说,这种关系在 JPA 中是没有问题的。 -
@dunni 编辑了问题,看看是否更清楚。谢谢。
-
您应该将您提出的原始问题反过来,这与杰克逊图书馆有关,您需要在其中一个注释
@JsonManagedReference,在许多参考文献上注释@JsonBackReference。
标签: java spring jpa spring-boot spring-data