2012-01-10 25 views
7

Makale hakkında bilgi depolamak için Hazırda Beklet özelliğini kullanıyorum. Ve iki yazı arasında bir ilişkiyi ifade etmek için sınıfımı bu şekilde açıkladım.Hibernate @OneToMany ve UNIQUE kısıtlaması

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

Ne yazık ki bu sadece tek bir diğer yazı alıntı bir makale olabileceği anlamına gelir citingArticle bir UNIQUE sınırlamasıyla ile çevrilmiştir.

Elbette bu benim sahip olmak istediğim şey değil, UNIQUE kısıtlamasını nasıl kaldırabilirim? Bir çok-çok ilişki varsa

cevap

7

, sen @ManyToMany ile modellemek gerekir: gerçekten beni yardımcı

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

Cevabını tarafından bunun için aptal hissediyorum;) –

+1

Ne? Hayır .... o * bir * şey referans * çok * başka şeyler istiyor. Bir şey için bir sütun olacak bir birleşim tablosunda (makalenin bu Set 'in hangi sınıfında olursa olsun) ve birçok şey için bir başka * benzersiz olmayan sütun (' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '. Çoktan çoğa istemiyor, sadece bire-çok istiyor, ve bu pek çok sütun üzerinde benzersiz bir kısıtlama yapmamalı. –

+0

@MattPowell Benzer bir soruna sahibim, ikinci varlığın çoğuna başvurmak için bir varlık, ama yine de benzersiz bir kısıtlama koyar, ve ben bunu bire-bir çok olduğuna inanıyorum, bu yüzden çözümün ne olduğunu düşünüyorsunuz? – Aria

İlgili konular