Hibernate / JPA relacionamento muitos para muitos por meio de uma tabela de junção e uma chave composta, problema de restrição exclusiva
Então eu fiz esta pergunta ontem, mas as postagens foram alteradas e a pergunta é diferente:
Hibernate / JPA Coleção de elementos com relacionamento muitos para muitos?
Quero saber se é possível criar entidades que modelem meu relacionamento necessário para que o Hibernate crie meu esquema quando eu inicializar meu aplicativ
O relacionamento que eu quero é assim:
O fato é que a tabela Join pode realmente conter linhas que não se vinculam a nenhum elemento. A estrutura representa a categorização de elementos com base no par "tipo" e "valor" e é inserida no sistema fora desse aplicativo específic
O que eu gostaria de poder fazer é definir minha Entidade de Hibernação do Elemento para conter uma lista de Categorias, por meio de um mapeamento, para que eu possa realmente ver a quais Categorias meu elemento pertence E para que o hibernate crie a tabela para mi
Aqui está o que eu tenho até agora: mapear isso na minha classe Element Entity assim:
@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;
}
Isso faz a maior parte do que eu quero, ele cria minhas tabelas como acima, exatamente como eu quero que elas barra uma coisa, há uma restrição exclusiva adicionada à tabela de elementos no par (tipo, valor). Não quero isso porque vários elementos podem ter o mesmo par de tipo e valor. Preciso ser capaz de interromper a criação da restrição exclusiva, mas não consigo descobrir como, com o mapeamento atual, posso fazer isso? Estou perdendo o objetivo de um relacionamento Muitos para Muitos?