Java 弹簧靴@OneToMany映射
我正在学习Spring Boot,我有点困惑 我创建了post和comment模型,我希望post有很多评论Java 弹簧靴@OneToMany映射,java,spring,hibernate,spring-boot,Java,Spring,Hibernate,Spring Boot,我正在学习Spring Boot,我有点困惑 我创建了post和comment模型,我希望post有很多评论 @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name ="post_id") private List<Comment> comments = new ArrayList<>(); 因此,我希望在返回单个帖子时使用comments数组,但由于错误:java.lang.IllegalStateExceptio
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name ="post_id")
private List<Comment> comments = new ArrayList<>();
因此,我希望在返回单个帖子时使用comments数组,但由于错误:java.lang.IllegalStateException无法调用sendError()
,我必须在注释getter上设置@JsonIgnore
映射的最佳实践是什么,我如何获得帖子评论,我想,不建议使用新的http请求?您应该在一个对象上使用
@JoinColumn
,在第二个对象上使用mappedBy
。试着这样做:
@OneToMany(cascade = CascadeType.ALL, mappedBy="post")
private List<Comment> comments;
mappedBy
需要在第二个实体中存储具有属性名称的字符串。如果存储关于post的信息的字段名为“post”,则必须将其设置为“post”to。您还可以在父类(此行)中配置@JoinColumn
从你的评论课上。这种映射可以用来避免在注释getter上添加@JsonIgnore
现在,您可以轻松地使用注释列表保存Post类,也可以获得带有相关注释列表的Post类。这应该是一个非常直接和简单的例子
@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;
@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;
@OneToMany(mappedBy="post",
cascade=CascadeType.ALL)
private List<Comment> comments;
@ManyToOne(cascade= {CascadeType.PERSIST, CascadeType.MERGE,
CascadeType.DETACH, CascadeType.REFRESH})
@JoinColumn(name="post_id")
private Post post;