Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Persist sendo chamado com um objeto Detached

No código abaixo, a classe Conta está em um estado Detached, entretando o registro de Cliente que referencia Conta é salvo no banco por meio de um método persist. Por que isso ocorre? Não deveria gerar um erro já que conta é Detached?

public class TestaContaCliente {
    public static void main(String[] args) {
       Cliente cliente = new Cliente();
       cliente.setNome("Leonardo");
        cliente.setEndereco("Rua Fulano, 123");
        cliente.setProfissao("Professor");

        //Conta está em um estado Detached
        Conta conta = new Conta();
        conta.setId(2);

        cliente.setConta(conta);

        EntityManager em = new JPAUtil().getEntityManager();
        em.getTransaction().begin();

        em.persist(cliente);

        em.getTransaction().commit();
        em.close();
    }
}
1 resposta
solução!

Oi Felipe, como n seu banco já existe uma Conta com id 2, ele consegue persistir seu cliente. Lá no banco a chave é suficiente pois vai ter uma FK conta_id com esse id 2. Mas veja que isso é uma péssima prática pois esse Objeto nesse momento está inconsistente, tem somente o id. O correto seria buscar essa conta no banco antes com o método getReferenceda JPA, dessa maneira ele só busca a referência e não vai executar duas querys