jpa中 mappedBy 属性用于维护表之间的关系,当实体之间存在双向关联的时候,需要通过 mappedBy 属性指定由谁维护,实体类属性加上 mappedBy 后,可以指定由另一端实体进行维护,
例如:
文章表(article)字段:id,标题,作者,内容
评论表(comment)字段:id,评论内容,文章id
文章(Article)实体:
@ManyToOne(mappedBy = "comment")
@JoinColumn
private List<Comment> comment;
评论(Comment)实体:
@ManyToOne
@JoinColumn(name = "comment_id")
private Article article;
生成的表中,会在评论表中共添加文章表的主键
mappedBy 作用于 @OneToOne、@OneToMany,@ManyToMany 注解中,用于维护表之间的外键关系,@ManyToOne 中没有这个属性。如果有的话就不合理了,拿上面例子说,相当于文章表多了评论字段的id,每一篇文章只能有一条评论,并且多个文章共用一条评论,这明显就不合理。