tenho 3 tabelas
palavra
palavra_tipo_palavra
tipo_palavra
ou seja é um manyToMany entre palavra e tipo_palavra, com isto estou eu tenho que inserir os seguintes dados por exemplo:
infinitivo:achar
gerúndio:achando
particípio:achando
onde o primeiro dado antes dos dois pontos é tipo_palavra e depois dos dois pontos é palavra que por sua vez gera uma relação na palavra_tipo_palavra.
Já estou conseguindo inserir. só que estou com o seguinte problema:
onde eu tenho palavras iguais com tipos diferentes eu não queria que ficasse repetida na minha tabela de palavra, contudo gostaria que ela fizesse referencia com o tipo na tabela associativa exemplo:
id nome_palavra id_palavra id_tipo_palavra id nome_tipo_palavra
1 achar 1 1 1 infinitivo
2 achando 2 2 2 gerúndio
2 3 3 particípio
Já tentei utilizar o unique no campo nome da tabela palavra, contudo ele não consegui fazer a associação e me gera um:
879 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 23505
879 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ERRO: duplicar chave viola a restrição de unicidade “palavra_nome_palavra_key”
minha inserção esta assim:
public void inserirPalavra(Palavra palavra) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
try {
log.info("Processando Palavra");
session.saveOrUpdate(palavra);
session.getTransaction().commit();
} catch (Exception erro) {
log.info("Erro na Inserção do Palavra : " + erro.getMessage()
+ "\n\n" + palavra.getNomePalavra() + "\n\n");
session.beginTransaction().rollback();
}
}