Bom dia galera,
Tenho a seguinte situação, quando tento editar a lista de vacinas de um paciente, ao invez de editar ele esta salvando outra lista, por exemplo: paciente1 tem 2 vacinas, ai quero adicionar mais 1 vacina, totalizando 3, mas no banco ele salva 5, as 3 que mandei atualizar e as outras 2 que ja tinha
Entidade VacinaAplicada
@ManyToOne
@JoinColumn(name = “idPaciente”, nullable = false)
private Paciente paciente;
Entidade Paciente
@OneToMany(mappedBy = "paciente", orphanRemoval = true, targetEntity = VacinaAplicada.class, fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
@Fetch(value = FetchMode.SUBSELECT)
private Set<VacinaAplicada> vacinaAplicada;
Aqui eu pego as vacinas
Set<VacinaAplicada> vacinas = new HashSet();
for (int i = 0; i < vacinasList.size(); i++) {
VacinaAplicada va = new VacinaAplicada();
va.setVacina(vacinasList.getElementAt(i));
va.setPaciente(paciente);
vacinas.add(va);
}
p.setVacinaAplicada(vacinas);
metodo editar do dao
public boolean editar(Entidade entidade) {
Session sessao = ConnectionFactory.getFabricaDeSessoes().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction();
sessao.update(entidade);
transacao.commit();
return true;
} catch (RuntimeException erro) {
if (transacao != null) {
transacao.rollback();
}
erro.printStackTrace();
return false;
} finally {
sessao.close();
}
}
esse é o projeto completo, se alguem quiser dar uma olhada