Ele roda mas não deleta, já coloquei o flush e tb nada... aparenta q tá tudo ok!, o nome passado existe no banco, não tem espaços em brancos a mais, não é chave primária, tentei passar pela chave, mas nem pela chave remove tb.
Cadastro cadastro = new Cadastro();
cadastro.setNome(nome);
Cadastro cad = merge(cadastro);
Você tá querendo atualizar e depois excluir?
Você tem é que buscar usando find ou refresh.
Dessa maneira não vai funcionar.
V
vitorkgbPJ
To querendo remover… mas para eu remover não teria que acha o objeto primeiro??? passando o nome???
como ficaria o exemplo então??? quero remover… só tenho o nome do cara… não é chave primária, preciso fazer um find e buscar o objeto q no caso é o cadastro??? se sim, como faço isso.
V
vitorkgbPJ
Melhor, o código abaixo creio q seria o mais correto
Mas para eu mandar um objeto cadastro, teria que buscar ele já q teria somente o nome que não é uma chave. creio q o código abaixo não é o mais correto.... é do modelo do de cima só que para busca, além disso dá erro
O método find do entityManager só poder ser utilizado se você tiver uma pk.
Acho que utilizando o refresh dá certo.
Assim:
publicvoidremoverRegistro(Cadastrocadastro){factory=Persistence.createEntityManagerFactory("exfuncionarios");manager=factory.createEntityManager();System.out.print("Excluindo registro... ");EntityTransactiontx=manager.getTransaction();tx.begin();try{manager.refresh(cadastro);//Atualiza o objeto com os dados do banco, se tiver dois nomes iguais ou mais, ele pegará o primeiro.manager.remove(cadastro);tx.commit();System.out.println("OK");manager.close();factory.close();}catch(RuntimeExceptione){e.printStackTrace();tx.rollback();}}