Tratar erro de chave estrangeira

6 respostas
java
M

Boa tarde,

Como eu faço para tratar um erro de persistência, quando eu tenho um código da chave estrangeira da tabela A que não existe na tabela B como chave primaria.
Obrigado

6 Respostas

J

Você deve validar essa informação antes de tentar persistir, consulte o ID em questão informado pelo usuário, caso exista faz a persistência, caso contrário informe o usuário com uma mensagem dizendo que o registro informado é inválido, pois não existe na base de dados.

M

Jonathan Primeiramente obrigado pela atenção.

O meu problema está no relacionamento quando faço o relacionamento das tabelas, estava acostumado com o php puro, que quando o filho não existia ele não listava, agora estou migrando para JAVA e não consigo fazer a mesma coisa.

Segue abaixo meu relacionamento JAVA e em seguida meu comando no SQL.

@OneToOne(orphanRemoval = true, optional = true)

@JoinColumn(name = id_largura, referencedColumnName = id)

private MaterialEstruturaDados idAltura;

select * from mat_cadastro_material m left join mat_estrutura_dados ed ON ed.id = m.id_comprimento
where m.id_comprimento = 14287;

J

Entendi, é que como você não havia descrevido um pouco mais sobre o problema a dúvida ficou bem vaga para o entendimento, no caso você está utilizando JPA ? (Nesse contexto sou iniciante ainda, tenho uma experiência maior com JDBC).
Está tratando os relacionamentos como unidirecional ou bidirecional ?

M

JPA, unidirecional

J

Qual o erro que ele te apresenta no log ?

M

11:35:14,839 ERROR [org.jboss.as.ejb3.invocation] (default task-94) WFLYEJB0034: EJB Invocation failed on component MaterialDaoImpl for method public abstract java.util.List br.com.clamom.sig.dao.MaterialDao.ListDescAutoComplete(java.lang.String): javax.ejb.EJBTransactionRolledbackException: Unable to find br.com.clamom.sig.model.MaterialEstruturaDados with id 14288

Criado 13 de setembro de 2017
Ultima resposta 13 de set. de 2017
Respostas 6
Participantes 2