Pessoal, to precisando fazer algo bem simples, mas do jeito que fiz não deu certo.
Na minha aplicação, quando o usuário clicar editar, na verdade não quero editar e sim salvar um novo registro.
Ex: tenho um cadastro de Ponto e outro de PontoConfig (um pra muitos), quando alterar um PontoConfig eu mantenho aquelas informações no banco e salvo uma nova (já com as alterações), tenho que fazer isso pra manter um histórico de alterações.
O que fiz? Instanciei um novo objeto e setei nele as informações do outro objeto, ele cria um novo registro, mas o antigo também está sendo alterado, segue o código:
@Begin
public String configPoint() {
if(pointConfig.getPointConfigId() != null) {
pointConfigEdit = new PointConfig(); // instancio um novo objeto (pointConfigEdit) para guardar as informações da alteração
entityManager.refresh(pointConfig); // recupero o objeto pointConfig
}
return "configPoint";
}
@End
public String savePointConfig() {
if (pointConfig.getPointConfigId() != null) {
/* seto em pointConfigEdit as informações de pointConfig */
pointConfigEdit.setClient(pointConfig.getClient());
pointConfigEdit.setEquipmentInstallation(pointConfig.getEquipmentInstallation());
pointConfigEdit.setFormula(pointConfig.getFormula());
pointConfigEdit.setPoint(point);
pointConfigEdit.setRegister(pointConfig.getRegister());
pointConfigEdit.setSensor(pointConfig.getSensor());
pointConfigEdit.setTeam(pointConfig.getTeam());
pointConfigEdit.setConfigAlert(pointConfig.getConfigAlert());
entityManager.persist(pointConfigEdit); // persisto apenas pointConfigEdit, mas no banco tá alterando também o pointConfig!!!
}
listPoints();
return "savePointConfig";
}
Porque tá dando um merge no pointConfig?
O que tenho que fazer para isso dar certo?
Obrigado!
