有一个附件表,有一个文章表,有一个图书表
文章表和图书表没有任何关系
文章表下可以有多个附件
图书表下可以有多个附件
而且同时映射到一个栏位,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{
。。。
}