Tenho uma viagem, com uma lista de pacientes, e cada paciente pode ter uma lista de acompanhantes, quando vou excluir um paciente, removo os acompanhantes da lista, removo o paciente da viagem e atualizo a viagem, porem recebo a seguinte msg de erro.
erro:
org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [modelo.entidade.Acompanhante#1]
código:
` public void excluirPacienteViagem(Integer cod) {
try {
session = HibernateUtil.currentSession();
for (int v = 0; v < viagem.getViagemPacienteList().size(); v++) {
if (viagem.getViagemPacienteList().get(v).getCodigo().equals(cod)) {
if (!viagem.getViagemPacienteList().get(v).getAcompanhanteList().isEmpty()) {
for (int x = 0; x < viagem.getViagemPacienteList().get(v).getAcompanhanteList().size(); x++) {
if (viagem.getViagemPacienteList().get(v).getAcompanhanteList().get(x).getTipoViagem().getCodigo() == 3) {
//volta
viagem.setVagasUtilizadasVolta(viagem.getVagasUtilizadasVolta() - 1);
} else if (viagem.getViagemPacienteList().get(v).getAcompanhanteList().get(x).getTipoViagem().getCodigo() == 2) {
// ida
viagem.setVagasUtilizadasIda(viagem.getVagasUtilizadasIda() - 1);
} else {
// ida e volta
viagem.setVagasUtilizadasVolta(viagem.getVagasUtilizadasVolta() - 1);
viagem.setVagasUtilizadasIda(viagem.getVagasUtilizadasIda() - 1);
}
viagem.getViagemPacienteList().get(v).getAcompanhanteList().remove(x);
}
}
if (viagem.getViagemPacienteList().get(v).getTipoViagem().getCodigo() == 3) {
//volta
viagem.setVagasUtilizadasVolta(viagem.getVagasUtilizadasVolta() - 1);
} else if (viagem.getViagemPacienteList().get(v).getTipoViagem().getCodigo() == 2) {
// ida
viagem.setVagasUtilizadasIda(viagem.getVagasUtilizadasIda() - 1);
} else {
// ida e volta
viagem.setVagasUtilizadasVolta(viagem.getVagasUtilizadasVolta() - 1);
viagem.setVagasUtilizadasIda(viagem.getVagasUtilizadasIda() - 1);
}
if (viagem.getViagemPacienteList().get(v).getRegistro() != null) {
Dao<Registro> daoR = new Dao<>(session, Registro.class);
viagem.getViagemPacienteList().get(v).getRegistro().setViagemPaciente(null);
daoR.merge(viagem.getViagemPacienteList().get(v).getRegistro());
}
viagem.getViagemPacienteList().remove(v);
break;
}
}
Dao<Viagem> daoViagem = new Dao<>(session, Viagem.class);
daoViagem.merge(viagem);
} catch (Exception e) {
System.out.println(e);
}
} `