Criei um método que tanto salva como altera um registro do banco de dados. O problema é que o método não mostra a mensagem de “Cadastrado” e sim de “Alterado”, sendo que o objeto foi inserido no banco e não alterado.
@Override
public void salvar(Veiculo t) {
try {
this.entityManager.getTransaction().begin();
if (t.getId() == null) {
for (Veiculo veiculo : listarTudo(Veiculo.class, "Select u from Veiculo u")) {
if (veiculo.getPlaca().equals(t.getPlaca())) {
System.out.println("Placa já existe");
}
}
this.entityManager.persist(t);
System.out.println("Cadastrado");
} else {
this.entityManager.merge(t);
System.out.println("Alterado");
}
this.entityManager.getTransaction().commit();
} catch (
RuntimeException e) {
this.entityManager.getTransaction().rollback();
e.printStackTrace();
}
}
Log:
Hibernate:
insert
into
Veiculo
(ano, arcondicionado, cambioAutomatico, cor, fabricante, modelo, motor, pathImagem, placa, qtdPortas, situacao, tipo, tipoDirecao, valorDiaria)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Alterado