(Hibernate + Seam) Violação de Constraint no update.  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
yasudevil
Entusiasta Java

Membro desde: 04/04/2005 20:34:44
Mensagens: 16
Offline

Oi Pessoal,

Estou com um problema de violação de constraint na minha aplicação. Estou usando atualmente Seam + Hibernate.

O meu cenário é mais ou menos o seguinte.

Tenho uma tabela Carro e outra CarroGrupo, por algum motivo que não posso explicar, essas duas tabelas possuem uma relação Muitos para Muitos o que provoca o aparecimento de uma terceira chamada CarroGrupoCarro.

Nas 3 tabelas (Carro, CarroGrupo e CarroGrupoCarro) existe a coluna tipo , e uma Constraint que garante que se houver uma relacionamento entre elas que o tipo seja igual em todas.

Meu problema ocorre quando estou editanto CarroGrupo para adicionar novos itens ao grupo. O usuário pode mudar o tipo de CarroGrupo, assim a lista de carros muda e trás só Carros do tipo recém trocado.

Mas como as propriedades da tela são mapeadas diretamente com a Entity CarroGrupo que está Managed (graças ao escopo de conversação do Seam), ele tenta primeiro dar update em CarroGrupo, pois mudei o tipo, para depois remover os dados em CarroGrupoCarro.

Por causa da minha bendita constraint eu ganho uma exception na cara.

Há alguma maneira que eu consiga primeiro remover os relacionamento em CarroGrupoCarro para depois fazer o update em CarroGrupo?

Eu andei pesquisando mas não achei nada. Seria o caso de colocar um @prePersist ou algo do tipo?
Silveira.Marcelo
Debugger

Membro desde: 28/01/2009 20:09:15
Mensagens: 66
Offline

Olá meu amigo.

Qual SGBD vc está usando em sua aplicação?

Java Web Developer
Bacharel em Sistemas de Informação
Rumo a SCJP
[MSN]
yasudevil
Entusiasta Java

Membro desde: 04/04/2005 20:34:44
Mensagens: 16
Offline

Estou usando o SQL Server.

Mais uma informação eu não tenho as constraints configuradas no meu mapeamento.

Estou tentando mapea-las agora para ver se altera o funcionamento.

This message was edited 2 times. Last update was at 22/01/2010 10:44:37

Silveira.Marcelo
Debugger

Membro desde: 28/01/2009 20:09:15
Mensagens: 66
Offline

Seguinte.

Eu tive um problema parecido como, já que não existe uma maneira de mapear essas constraint pelo Bean que gerencia a tabela no banco de dados (Entity Bean). Então resolvi da seguinte maneira:

Fui até a tabela gerada pelo Hibernate que configura o relacionamento entre duas entidade em propiedades dessa tabela, apaguei a UNIQUE CONSTRAINT e atualizei o banco. Em seguida vc para o Application Server e reinicia a sua IDE (se estiver usando eclipse - Restart). Limpe a pasta temporária do seu Application Server e start ele novamente.

Mande-me um feedback caso tenha dado certo.

Sds

Java Web Developer
Bacharel em Sistemas de Informação
Rumo a SCJP
[MSN]
yasudevil
Entusiasta Java

Membro desde: 04/04/2005 20:34:44
Mensagens: 16
Offline

Putz,

Estava na esperança de encontrar alguma solução que não precisasse remover a constraint da base de dados.

Na realidade eu não tenho autonomia para remover essas coisas da Base só o DBA tem, posso tentar convencer ele mas já viu né vou ter que explicar um monte de coisas e daí...

De qualquer maneira vou tentar pedir pra remover só para eu fazer um teste.
Silveira.Marcelo
Debugger

Membro desde: 28/01/2009 20:09:15
Mensagens: 66
Offline

Isso é verdade.

O que vc pode fazer tb é o seguinte; tente rever o teu relacionamento para que ele não gere essa tabela intermediária, ou peça para o DBA excluí-la para vc fazer o teste mesmo. Fica uma dica ai pra vc amigo, ao invés de vc pedir para o DBA excluir a constraint, baixe o SQL Server EE e teste na sua própia máquina, ai vc terá maior embasamento para discutir com o administrador do banco, na próxima desenvolva os seus projetos com a toda a infra necessária para o mesmo. Para baixar o jar acesse http://www.microsoft.com/downloads/details.aspx?familyid=e22bc83b-32ff-4474-a44a-22b6ae2c4e17&displaylang=en e instale no seu projeto.

Estamos ai pra ajudar qualquer coisa

Um abraço

Java Web Developer
Bacharel em Sistemas de Informação
Rumo a SCJP
[MSN]
yasudevil
Entusiasta Java

Membro desde: 04/04/2005 20:34:44
Mensagens: 16
Offline

Pois é... é um problema esse tipo de coisa.

Bom.. valeu vou ver se eu resolvo removendo a constraint.

 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team