ある著者が多くの本を書いており、多くの本には著者が 1 人しかいないとしましょう。
双方向の関係であるように。
シリアル化しようとすると、次のような本と著者の無限ループになります。
{
"id": 1,
"name": "1984",
"author": {
"id": 1,
"name": "George Orwell",
"books": [
{
"id": 1,
"name": "1984",
"author": {
"id": 1,
"name": "George Orwell",
"books": [
{
"id": 1,
"name": "1984",
"author": {
...etc.
これら 2 つの注釈 (@JsonManagedReference
と@JsonBackReference
) は、このループを打破するのに役立ちます。
@Entity
public class Book {
@ManyToOne
@JoinColumn(name = "author_id")
@JsonManagedReference
private Author author;
}
@Entity
public class Author extends AbstractEntity {
@OneToMany(mappedBy = "author", fetch = FetchType.LAZY,
cascade = CascadeType.ALL)
// @JsonIgnore
@JsonBackReference
private Set<Book> books;
}
しかし、このソリューションを使用すると、適切な著者の本にアクセスできます
{
"id": 1,
"name": "1984",
"author": {
"id": 1,
"name": "George Orwell"
}
}
、しかし、あなたは彼らの本で著者にアクセスすることができます:
{
"id": 1,
"name": "George Orwell"
}
誰かがすでにこの問題を修正していますか? それとも、片側だけから完全な情報にアクセスする方法ですか?
ご協力ありがとうございました
ジョス