Oi pessoal do guj, estou com uma dificuldade com jpa e venho pedir ajuda.
Tenho uma classe chamada entidade, ela tem um relacionamento com ela mesma (atributo empresa).
Não consigo desvincular uma entidade de uma empresa, quando busco a entidade no banco ela sempre vem com a empresa mesmo eu tendo setado empresa pra null e salvado. o problema é só com esse tipo de relacionamento.
oi pessoal, tentei con fetchtype eager e nullable true e não mudou nada, seto a empresa pra null e nada acontece.
não sei que outra anotação ou configuração poderia ter a ver com isso, por favor me dêem uma dica do que pode ser
ou pelo menos uma direção para solucionar isso…
vi que no arquivo de configuração pode-se colocar a seguinte propriedade:
isso resolveu o problema de setar null, porém outros relacionamentos não estão mais sendo mais trazidos do banco.
arrumou uma coisa e estragou outra =/
alguma idéia?
R
RenanRosa
ruffy:
fiz o teste, mas não resolveu…
vi que no arquivo de configuração pode-se colocar a seguinte propriedade:
isso resolveu o problema de setar null, porém outros relacionamentos não estão mais sendo mais trazidos do banco.
arrumou uma coisa e estragou outra =/
alguma idéia?
mas o certo é você dar um remove na lista de empresas ? por que para remover um objeto tem que remover da lista deopis dar um persist/update (hibernate)
assim ele não seta null, mas sim remove de verdade
R
ruffy
o mapeamento está do lado da entidade, que tem uma empresa, não do lado da empresa, que teria uma lista de entidades.
não quero remover a empresa do banco, só quero que a entidade não seja mais vinculada a nenhuma empresa…
exatamente, da no mesmo se o mapeamento fosse em qualquer uma, você não pode setar um valor nulo, você tem que criar um metodo para deletar a empresa, ai você coloca em.delete(getEmpresa);
R
RenanRosa
ruffy:
o mapeamento está do lado da entidade, que tem uma empresa, não do lado da empresa, que teria uma lista de entidades.
não quero remover a empresa do banco, só quero que a entidade não seja mais vinculada a nenhuma empresa…
exatamente, da no mesmo se o mapeamento fosse em qualquer uma, você não pode setar um valor nulo, você tem que criar um metodo para deletar a empresa, ai você coloca em.delete(getEmpresa);
R
ruffy
o detalhe é que eu não quero que a empresa seja deletada
R
RenanRosa
então em vez do delete você tentou entidade.setEmpresa(new Empresa()) e depois em.update(entidade) (ou update se for hibernate) ?
assim ele salva vazio e não nulo (nulo e vazio tem diferenças)
Se não der certo, chegar em casa eu refaço seu código lá e vejo, to no trampo
R
ruffy
tentei entidade.setEmpresa(null) e depois em.update(entidade), sem sucesso.
acabei fazendo com native query.
em.createNativeQuery("update entidades set entidade_id = null where id = ?")
valeu pela ajuda cara.
R
RenanRosa
ruffy:
tentei entidade.setEmpresa(null) e depois em.update(entidade), sem sucesso.
acabei fazendo com native query.
em.createNativeQuery("update entidades set entidade_id = null where id = ?")
valeu pela ajuda cara.
é uma boa solução, mas não a melhor, mas já que solucionou seu problema