2012-01-10 12 views
7

私は、論文の引用に関する情報を保存するためにHibernateを使用しています。そして、2つの記事の関係を表現するために、このようにクラスに注釈を付けました。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

私はあなたの答えでそれのために愚かな感じは本当に私を助けた;) –

+1

何?いいえ、彼は*一つ* *他のものを参照することを望んでいます。あるもの(この 'Set '記事の中にあるもの)の1つの列であり、多くのもの(' Article's)のための別の*非ユニークな列である結合テーブルでは。彼は多対多を望んでおらず、多対多を欲しがっています。それは多くの列に一意の制約を課すべきではありません。 –

+0

@MattPowell私は同様の問題を抱えています。第2のエンティティの多くを参照する1つのエンティティですが、依然としてユニークな制約があります。これは1対多であると確信しています。 – Aria

関連する問題