2012-01-10 43 views
7

Estoy usando Hibernate para almacenar información sobre citas de artículos. Y anoté mi clase de esta manera para expresar una relación entre dos artículos.Hibernate @OneToMany y la restricción ÚNICA

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

Desafortunadamente esto se traduce en una restricción UNIQUE en la citingArticle, lo que significa que sólo puede tener un artículo para citar un solo otro artículo.

Por supuesto que esto no es lo que me gustaría tener, ¿cómo puedo eliminar la restricción ÚNICA?

Respuesta

7

Si usted tiene una relación de muchos a muchos, es necesario modelar con @ManyToMany:

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

me siento estúpida para ella por su respuesta realmente me ha ayudado;) –

+1

¿Qué? No ... quiere * una * cosa para referenciar * muchas * otras cosas. En una tabla de unión que sería una columna para una cosa (cualquiera que sea la clase en la que esté este 'Conjunto' de artículos), y otra columna * no única * para las muchas cosas (los 'Artículos'). No quiere muchos, quiere solo uno a muchos, y eso no debería crear una restricción única en la columna de muchos. –

+0

@MattPowell Tengo un problema similar, una entidad para hacer referencia a muchas de la segunda entidad, pero todavía impone una restricción única, y estoy convencido de que es uno-a-muchos, ¿cuál cree que es la solución? – Aria

Cuestiones relacionadas