0

ある著者が多くの本を書いており、多くの本には著者が 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"
}

誰かがすでにこの問題を修正していますか? それとも、片側だけから完全な情報にアクセスする方法ですか?

ご協力ありがとうございました

ジョス

4

0 に答える 0