关于JPA中多个OneToMany情况如何设计映射关系

有一个附件表,有一个文章表,有一个图书表
文章表和图书表没有任何关系
文章表下可以有多个附件
图书表下可以有多个附件
而且同时映射到一个栏位,id值uuid不会重复
这样的关系如何映射

Article.java
[code="java"]@OneToMany
@JoinColumn(name = "refId", referencedColumnName = "id")
private List attachmentList;[/code]

Book.java
[code="java"]@OneToMany
@JoinColumn(name = "refId", referencedColumnName = "id")
private List attachmentList;[/code]

Attachment.java
[code="java"]private String refId[/code]

你这个明显是要有中间表啊。。

显示的把中间表搞出来就行了

    @OneToMany(fetch = FetchType.LAZY)
@JoinTable(name = "article_attachment",//中间表名
joinColumns = { @JoinColumn(name = "article_id") }, 
inverseJoinColumns = { @JoinColumn(name = "attachment_id") }) 
public List<Attachment> attachmentList() {
    return attachmentList;
}

book同理

另外如果想要业务上更加明确的话。用attachment做基类,每种attachment继承基类,这样等于中间表也有个对象映射了,可以扩展,比如:

@Entity
@Table(name = "article_attachment")
@PrimaryKeyJoinColumn(name = "attachment_id")
public class ArticleAttach extends Attachment{
。。。
}