【发布时间】:2012-11-28 12:13:32
【问题描述】:
我有三个类,其中一个是用户,这个用户有其他类实例。像这样;
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")
一切正常。 :)
【问题讨论】:
-
你到底是怎么失败的?确切地说,您在寻求什么帮助?如果第一个解决方案对您有用,为什么不坚持下去呢?
-
因为 jpa 创建了 User_APost 和 User_BPost 表,但它没有向该表添加任何行。感觉我错了。
标签: java hibernate jpa one-to-many many-to-one