我有三个类,其中一个名称为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")
一切正常运作。:)