繁体   English   中英

使用 OneToMany 时,Spring 会返回一大串数据而不是 List

[英]Spring returning a big String of data instead of List when using OneToMany

更新:我尝试从 getAuthor() 和 getTopic() 在 Post 实体中返回 null 并且这似乎已经解决了它,但现在问题是我不知道 Post 的作者是谁......它会更聪明吗想法只使用String usernameOfAuthor而不是Account author

我有 Post 实体和一个 Topic 实体,我想对其进行设置,以便一个 Topic 可以有多个 Posts,多个 Posts 可以在一个 Topic 中。这是我的代码:

@Entity
@Table(name="topic")
public class Topic extends TimeStampModel {
    @Id
    @Column
    @GeneratedValue
    private Long id;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private String codeName;

    @Column
    private String description;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "topic")
    private List<Post> posts;

//getters and setters
}
@Entity
@Table(name="post")
public class Post extends Likeable {
    @Id
    @GeneratedValue
    @Column
    private Long id;

    @Column(nullable = false)
    private String title;

    @Column
    private String text;

    @ManyToOne
    @JoinColumn(name="topic_id", nullable = false)
    private Topic topic;

    @ManyToOne
    private Account author;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "post")
    List<Comment> topLevelComments;

//getters and setters
}

现在,当我运行这段代码,并请求获取所有主题时,这就是我的浏览器中的样子: 例子

如果我删除了mappedBy='topic'@JoinColumn(name="topic_id", nullable = false) ,一切正常,我得到一个主题列表作为回报,这很好,但是我的帖子不t 工作,我的主题都没有帖子......我在这里做错了什么?

您可能需要添加 @JsonBackReference 以防止 Jackson (json) 无限递归问题。

@JsonBackReference 
@ManyToOne
@JoinColumn(name="topic_id", nullable = false)
private Topic topic;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM