我有三个类,其中一个是用户,这个用户有其他类实例。像这样;
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")
一切正常。:)