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:

1 http://a8.sphotos.ak.fbcdn.net/hphotos-ak-ash4/417593_10150594114269218_505554217_8657377_1475865815_n.jp

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?

questionAnswers(2)

yourAnswerToTheQuestion