JPA OneToMany 和 ManyToOne throw:实体列映射中的重复列(应使用 insert=“false” update=“false”进行映射)
我有三个类,其中一个名称是User,这个用户有其他类实例。像这样;
public class User{
@OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
public List<APost> aPosts;
@OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
public List<BPost> bPosts;
}
public class BPost extends Post {
@ManyToOne(fetch=FetchType.LAZY)
public User user;
}
public class APost extends Post {
@ManyToOne(fetch=FetchType.LAZY)
public User user;
}
它的工作方式是这样的,但在数据库中生成空表。其中必须包含外键。当我尝试使用和注释时,我失败了。如何解决此问题?mappedBy
JoinColumn
额外信息:
当我改变与;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id")
public User user;
和
@OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="id")
public List<APost> aPosts;
我得到
发生 JPA 错误(无法构建 EntityManagerFactory):实体映射中的重复列:models.post.APost 列:id(应使用 insert=“false” update=“false”进行映射)
最终编辑:最后,我对JPA注释的看法完全错误。:(当我改变时
@OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="id")
自
@OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="user")
和
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="user_id")
一切都很好。:)