Java Hibernate@OneToMany-映射到多个联接表
考虑以下域模型:Java Hibernate@OneToMany-映射到多个联接表,java,hibernate,annotations,Java,Hibernate,Annotations,考虑以下域模型: Issue - id - List<Comment> Entry - id - List<Comment> Comment -id -comment 问题 -身份证 -名单 进入 -身份证 -名单 评论 -身份证 -评论 在我的设计中,我试图创建两个连接表来管理关联;发布注释和输入注释。我假设@OneToMany在问题和条目上,但是如何映射多个连接表呢?使用hibernate注释,如何映射它?这就是所谓的独占弧。不要这样做。而是这样做: Post
Issue
- id
- List<Comment>
Entry
- id
- List<Comment>
Comment
-id
-comment
问题
-身份证
-名单
进入
-身份证
-名单
评论
-身份证
-评论
在我的设计中,我试图创建两个连接表来管理关联;发布注释和输入注释。我假设@OneToMany在问题和条目上,但是如何映射多个连接表呢?使用hibernate注释,如何映射它?这就是所谓的独占弧。不要这样做。而是这样做:
Post (id, List<Comment>)
Issue extends Post
Entry extends Post
Comment (id, comment)
Post(id,列表)
问题扩展后
入职扩展职位
注释(id,注释)
换句话说,为Issue和Entry创建一个公共超类,并对其进行注释。如果您可以更改域模型,请查看由给出的答案。您只有一个表要更新,因此它将提供更好的性能 如果无法更改域模型,则可以通过联接表映射
注释集合:
// ENTRY
@OneToMany
@JoinTable(
name="ENTRY_COMMENTS",
joinColumns = @JoinColumn( name="entry_id"),
inverseJoinColumns = @JoinColumn( name="comment_id")
)
public List<Comment> getComments()
// ISSUE
@OneToMany
@JoinTable(
name="ISSUE_COMMENTS",
joinColumns = @JoinColumn( name="issue_id"),
inverseJoinColumns = @JoinColumn( name="comment_id")
)
public List<Comment> getComments()
//条目
@独身癖
@可接合(
name=“输入注释”,
joinColumns=@JoinColumn(name=“entry\u id”),
inverseJoinColumns=@JoinColumn(name=“comment\u id”)
)
公共列表getComments()
//发行
@独身癖
@可接合(
name=“发布意见”,
joinColumns=@JoinColumn(name=“issue\u id”),
inverseJoinColumns=@JoinColumn(name=“comment\u id”)
)
公共列表getComments()
对于问题和条目,您的评论仍将在同一个表中;只有联接表不同。请注意,这是一种单向关系。详细信息为如果关联是双向的,则这将是唯一的弧。Hibernate提供了将一对多映射的其他方法。