O problema é que na tabela que representa o objeto composto, a chave estrangeira correspondente ao objeto componente aponta para um valor nulo. No meu caso, não existe um objeto Unidade com o ID 11, mas meu objeto composto aponta para ele.
Quando esta exceção é lançada, o objeto não é retornado. Gostaria saber se há algum modo de ignorar este erro de integridade (tendo em vista que a base do cliente não pode ser alterada por mim) trazendo o objeto componente com o valor nulo.
O problema é que na tabela que representa o objeto composto, a chave estrangeira correspondente ao objeto componente aponta para um valor nulo. No meu caso, não existe um objeto Unidade com o ID 11, mas meu objeto composto aponta para ele.
Quando esta exceção é lançada, o objeto não é retornado. Gostaria saber se há algum modo de ignorar este erro de integridade (tendo em vista que a base do cliente não pode ser alterada por mim) trazendo o objeto componente com o valor nulo.
Desde já agradeço
Sua base de dados está com um sério problema de design… voce deve ativar as constraints do seu banco para evitar esse tipo de “XUNXO”…
se nao existe reg 11 , este campo OU deveria estar NULL OU deveria ter seu registro apagado…
Para evitar a carga de relacionamentos use LAZY=true no mapeamento… porem isso vai ser apenas paleativo… voce terá que corrigir isso.
X
xgucax
chun:
xgucax:
Senhores,
Na recuperação de um objeto composto da minha aplicação, a seguinte exceção é lançada:
O problema é que na tabela que representa o objeto composto, a chave estrangeira correspondente ao objeto componente aponta para um valor nulo. No meu caso, não existe um objeto Unidade com o ID 11, mas meu objeto composto aponta para ele.
Quando esta exceção é lançada, o objeto não é retornado. Gostaria saber se há algum modo de ignorar este erro de integridade (tendo em vista que a base do cliente não pode ser alterada por mim) trazendo o objeto componente com o valor nulo.
Desde já agradeço
Sua base de dados está com um sério problema de design… voce deve ativar as constraints do seu banco para evitar esse tipo de “XUNXO”…
se nao existe reg 11 , este campo OU deveria estar NULL OU deveria ter seu registro apagado…
Para evitar a carga de relacionamentos use LAZY=true no mapeamento… porem isso vai ser apenas paleativo… voce terá que corrigir isso.
Olá chun,
Eu sei que isto é um grande problema. Creio que não me expressei bem, mas a base de dados não é minha nem muito menos pode ser alterada por mim. a única coisa que posso fazer é CRUD sobre os registros (no caso de remoção me foi orientado que não alterasse os dados já existentes, ou seja, removesse apenas aquilo que insiro).
A opção de Lazy=true não é interessante para mim pois preciso destes objetos (para os que existam).
Pensei em criar algum método que parseasse estes erros por exemplo, criasse projeções que não contém os objetos componentes e tentasse inicializá-los. Caso houvesse sucesso na inicialização, o objeto seria retornado completo. Caso contrário, retornasse null.
O problema desta abordagem é que eu teria que reescrever muito código (código que teoricamente está correto para uma base correta). Aí gostaria de saber se não existe algum recurso 9de mapeamento, ou outro tipo) para isto
Abraços
J
JotaJota
sim Existe uma maneira de Ignorar este erro:
Adicione no mapeamento annotation esse codigo: @NotFound(action=NotFoundAction.IGNORE)
Lembrando que esse annotation apenas vai mascarar o erro… e não trata-lo
Se alguem discorda por favor , comente
Atenciosamente,
J
joaoorso
No mínimo é mySQL. :roll:
G
geidivan
Este não é um problema do banco, mas sim do DBA que cria tabelas tão frágeis assim. Já encontrei o mesmo problema em um banco Oracle 10 em uma grande empresa.
O MySQL é um excelente banco de dados.
V
viniciuspadua
comigo esta acontecendo o mesmo problema, em um relacionamento muitos para um! como resolvo esse caso ? creio que era apra retornar nulo!
J
jvds
xgucax:
chun:
xgucax:
Senhores,
Na recuperação de um objeto composto da minha aplicação, a seguinte exceção é lançada:
O problema é que na tabela que representa o objeto composto, a chave estrangeira correspondente ao objeto componente aponta para um valor nulo. No meu caso, não existe um objeto Unidade com o ID 11, mas meu objeto composto aponta para ele.
Quando esta exceção é lançada, o objeto não é retornado. Gostaria saber se há algum modo de ignorar este erro de integridade (tendo em vista que a base do cliente não pode ser alterada por mim) trazendo o objeto componente com o valor nulo.
Desde já agradeço
Sua base de dados está com um sério problema de design… voce deve ativar as constraints do seu banco para evitar esse tipo de “XUNXO”…
se nao existe reg 11 , este campo OU deveria estar NULL OU deveria ter seu registro apagado…
Para evitar a carga de relacionamentos use LAZY=true no mapeamento… porem isso vai ser apenas paleativo… voce terá que corrigir isso.
Olá chun,
Eu sei que isto é um grande problema. Creio que não me expressei bem, mas a base de dados não é minha nem muito menos pode ser alterada por mim. a única coisa que posso fazer é CRUD sobre os registros (no caso de remoção me foi orientado que não alterasse os dados já existentes, ou seja, removesse apenas aquilo que insiro).
A opção de Lazy=true não é interessante para mim pois preciso destes objetos (para os que existam).
Pensei em criar algum método que parseasse estes erros por exemplo, criasse projeções que não contém os objetos componentes e tentasse inicializá-los. Caso houvesse sucesso na inicialização, o objeto seria retornado completo. Caso contrário, retornasse null.
O problema desta abordagem é que eu teria que reescrever muito código (código que teoricamente está correto para uma base correta). Aí gostaria de saber se não existe algum recurso 9de mapeamento, ou outro tipo) para isto
Abraços
Conseguiu resolver este problema ?
V
viniciuspadua
quando o relacionamento não for obrigatório utilizo isso!
@OneToOne(optional=true)
J
jvds
viniciuspadua:
quando o relacionamento não for obrigatório utilizo isso!
@OneToOne(optional=true)
E para
@OneToMany@ManyToOne
Obrigado !!!
V
viniciuspadua
todos tem o optional!
J
jvds
Nao @OneToMany
J
jvds
Mesmo colocando optional=true ainda continuo tomando exception
Isso esta certo e que no meu caso estou fazendo uma consulta pela primary key de meu banco para nao precisar criar CRITERIA resolvi usar o load para encurtar o tempo de desenvolvimento.