我正在学习 Spring Boot,我有点困惑。
我创建了帖子和评论模型,我希望帖子有很多评论。
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name ="post_id")
private List<Comment> comments = new ArrayList<>();
评论如下:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id")
private Post post;
因此,当我返回单个帖子但由于错误时,我希望有评论数组:java.lang.IllegalStateException 无法调用 sendError()
,我必须在评论 getter 上设置 @JsonIgnore
。
什么是映射的最佳实践,我如何获得帖子评论,我猜,不推荐新的 http 请求?
最佳答案
您应该在关系中的一个对象上使用@JoinColumn
,在第二个对象上使用mappedBy
。尝试这样做:
@OneToMany(cascade = CascadeType.ALL, mappedBy="post")
private List<Comment> comments;
在 Post 实体中,在 Comment 实体中:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id")
private Post post;
mappedBy
需要在第二个实体中存储带有属性名称的字符串。如果您存储有关帖子的信息的字段名称为“post”,则必须将其设置为“post”。
关于java - Spring Boot @OneToMany 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57915477/