Así que hice esta pregunta ayer, pero los postes de la portería han cambiado y la cuestión es diferente:Hibernate/JPA de muchos a muchos a través de una tabla de unión y una clave compuesta, tema único de restricción
Hibernate/JPA Collection of Elements with Many to Many relationship?
Quiero saber si es posible crear entidades que modelarán mi relación requerida para que Hibernate cree mi esquema cuando active mi aplicación.
La relación que quiero es así:
Lo que pasa es que la tabla de unión de hecho puede contener filas que no enlazan con cualquier elemento. La estructura representa la categorización de elementos basados en el par "tipo" y "valor" y se ingresan al sistema fuera de esta aplicación en particular.
Lo que me gustaría poder hacer es configurar mi Element Hibernate Entity para que contenga una lista de categorías, a través de un mapeo, de modo que pueda ver a qué categorías pertenece mi elemento Y para que hibernate cree la tabla para yo.
Esto es lo que tengo hasta el momento: la cartografía de esto en mi clase de elementos de entidad de esta manera:
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "ELEMENT_ELEMENTCATOGORY", joinColumns = {
@JoinColumn(name = "type", referencedColumnName = "type"),
@JoinColumn(name = "value", referencedColumnName = "value") })
@Column(name = "category")
public List<ElementCategory> getCategories() {
return categories;
}
Esto mayor parte de lo que quiero, que crea mis tablas que el anterior, exactamente lo que ellos quieren barra una cosa, hay una restricción única añadida a la tabla de elementos en el par (tipo, valor). No quiero esto porque varios elementos pueden tener el mismo par de tipo y valor, necesito poder detener la restricción única desde el comienzo creado, pero no puedo entender cómo con el mapeo actual, ¿puedo hacer esto? ¿Me estoy perdiendo el objetivo de una relación de muchos a muchos?
Aún creo que necesita una InverseJoinColumn para incluir el ID de ElementCategory en su tabla de unión. – bvanvelsen
¿Podría ser que suena más lógico que el tipo y el valor son una entidad? entonces la identificación de este tipo, entidad de valor es una joincolumn del – bvanvelsen
que se puede integrar. La identificación está implícita en el hecho de que tengo un conjunto de categorías de elementos, como con cualquier conjunto. Como dije, las tablas se están configurando correctamente y eso incluye el enlace entre "categoría" en la tabla de unión e "id" en la tabla ElementCategory. ¿Cree que la unión inversa eliminará la restricción única de la tabla de elementos? Lo intentaré. – Link19