Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @JSON中不存在OneToMany列 我拥有以下实体:_Java_Json_Spring_Jpa_Entity Relationship - Fatal编程技术网

Java @JSON中不存在OneToMany列 我拥有以下实体:

Java @JSON中不存在OneToMany列 我拥有以下实体:,java,json,spring,jpa,entity-relationship,Java,Json,Spring,Jpa,Entity Relationship,Book.java @Entity @Data public class Book { @Id private Long id; @Column(unique = true, nullable = false) private String title; @OneToMany(fetch = FetchType.LAZY, mappedBy = "book") @JsonManagedReference priva

Book.java

@Entity @Data
public class Book {

    @Id
    private Long id;

    @Column(unique = true, nullable = false)
    private String title;

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "book")
    @JsonManagedReference
    private List<Note> notes;

}
当我调用我的BookRestController时,它返回一个JSON,其中包含我需要的所有属性:

{
    "id": 15,
    "title": "A fé explicada",
    "author": "Leo J. Trese",
    "notes": [{
        "id": 10,
        "title": "Sobre o pecado mortal"
    }]
}
但是当我调用NoteRestController时,Book属性丢失:

{
   "id": 10,
   "title": "Sobre o pecado mortal"
   // missing "book" property here...
}
我做错了什么


我使用@OneToMany@ManyToOne注释来声明这是一种1-N关系@JsonBackReference@JsonManagedReference的目的很简单,就是为了避免无限递归。

当然
被省略了,这就是
@JsonBackReference
的字面意义

@JsonBackReference是引用的后面部分–它将从序列化中省略

()

解决方案听起来很简单:您可以创建一个显式的传输对象,名为e,而不是在REST控制器中返回一个
Note
实体(无论如何,我尽量避免将实体保留为在REST上下文中没有任何用途的实体)。g
NoteDTO
包含一本书的引用(省略该书的注释以避免无限递归):

{
   "id": 10,
   "title": "Sobre o pecado mortal"
   // missing "book" property here...
}
public class NoteDTO {

    private Long id;
    private String title;
    private BookReferenceDTO book;

    // getters and setters
}
public class BookReferenceDTO {

    private Long id;
    private String title;

    // getters and setters
}