2012-01-10 121 views
7

我使用Hibernate來存儲有關文章引用的信息。爲了表達兩篇文章之間的關係,我以這種方式註釋了我的班級。Hibernate @OneToMany和UNIQUE約束

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
@JoinTable(name = "CITATIONS") 
private Set<Article> citingArticles = new HashSet<Article>(); 

很不幸,這是翻譯上的citingArticle UNIQUE約束,這意味着我只能有一篇文章舉一個單一的其他文章。

當然這不是我想要的,我該如何去除UNIQUE約束?

回答

7

如果你有許多一對多的關係,你需要將它與@ManyToMany型號:

@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
@JoinTable(name = "CITATIONS") 
private Set<Article> citingArticles = new HashSet<Article>(); 
+0

我覺得自己很蠢,它通過你的答案真的幫了我;) – 2012-10-26 15:25:22

+1

什麼?不......他希望*一件事情可以引用*許多*其他事情。在一個連接表中,這個連接表是一列(無論這個文章的「集合」在哪個類中),還有另一個非唯一的列(許多條目)。他不想要多對多,他只想要一對多,並且不應該在許多列上產生獨特的約束。 – 2017-05-09 18:34:26

+0

@MattPowell我有一個類似的問題,一個實體引用許多第二個實體,但它仍然提出了一個獨特的約束,我相信它是一對多的,所以你認爲解決方案是什麼? – Aria 2017-07-07 15:50:29