编程语言
首页 > 编程语言> > java – JPA OneToMany和ManyToOne throw:实体列映射中的重复列(应使用insert =“false”update =“false”映射)

java – 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;
 }

它的工作方式与此类似,但在db中生成emty表.哪个必须包含外键.当我尝试使用mappedBy和JoinColumn annotains时,我失败了.我该如何解决这个问题?

额外的信息:

当我换了;

 @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")

everthing工作正常.

标签:many-to-one,java,jpa,hibernate,one-to-many
来源: https://codeday.me/bug/20190919/1813009.html