Galera, boa tarde. Estou com problema e espero que alguém possa me ajudar. Seguinte…
Estou desenvolvendo uma classe Pessoa que está associada a um Endereco.
Particularidades:
1- Um endereco pode estar associado a várias pessoas.
2- Na tabela o campo cep é único.
Quando eu gravo uma pessoa, como o endereço não existe no banco de dados, o hibernate cria o endereco tb.
Agora quando eu gravou outra pessoa, utilizando o mesmo endereço, o hibernate tenta gravar novamente o endereço, mas dah erro por causa que o cep é unico.
Ex.:
Endereco endereco1 = new Endereco(“RUA A”, “12345678”);
Pessoa pessoa1 = new Pessoa(“PESSOA A”, endereco1);
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
session.save(pessoa1);
t.commit();
session.close();
[GRAVA NORMAL E CRIA O ENDERECO…TUDO OK]
Endereco endereco2 = new Endereco(“RUA A”, “12345678”);
Pessoa pessoa2 = new Pessoa(“PESSOA B”, endereco2);
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
session.save(pessoa2);
t.commit();
session.close();
[DAH ERRO PORQUE O HIBERNATE TENTA GRAVAR O endereco2 QUE POSSUI O MESMO CEP QUE O endereco1]
A minha dúvida eh: Há alguma maneira de fazer com que o hibernate verifique se o objeto existe no banco não pelo id mas pelo cep no meu caso…
Espero ter sido claro…agradeço qq ajuda