Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate@OneToMany-映射到多个联接表_Java_Hibernate_Annotations - Fatal编程技术网

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提供了将一对多映射的其他方法。