Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SpringDataJPA salvar relacionamento OneToOne obtendo Não é possível adicionar ou atualizar uma linha filha:uma restrição de chave estrangeira falha


O problema provavelmente é sua estratégia de geração de id (desde que você inicializou o contato corretamente). acontecer na mesma transação.

Se você alterar o nível de log para fine para seu JPA (em perstitance.xml), provavelmente verá a sequência de inserção do usuário e do contato, mas o contato terá user_id 0.

Então, a) certifique-se de definir usuário explícito em seu contato (como você disse que a relação é gerenciada por Contato. b) Defina contato no usuário. c) persistir (em uma transação). Dependendo da implementação do seu JPA ele ainda pode não funcionar (verifique as consultas emitidas, muito provavelmente haverá inserção no contato e depois atualização). Altere a estratégia de geração para TABLE, com TABLE JPA pega o próximo ID livre, atribui-o ao objeto e faz a inserção para que seja "conhecido" antes da inserção.