Hola
Tipdar y
FuzzyLog verán descubrí gran parte de mi problema y cómo resolverlo:
En la clase Subasta tenía que borrar el atributo subasta que estaba redundante y hacer lo que puse ahora
Código Java:
Ver original@OneToMany(mappedBy = "key.subasta",cascade = CascadeType.ALL)
Pero ahora estoy en que cuando guardo la subasta está queda almacenada en la base de datos, pero cuando la edito con las ventas almacenadas me da este error, cuando guardo la subasta nueva:
abr 24, 2017 11:54:51 PM org.hibernate.internal.ExceptionMapperStandardImpl mapManagedFlushFailure
ERROR: HHH000346: Error during managed flush [A different object with the same identifier value was already associated with the session : [app.model.entity.Venta#app.model.entity.VentaKey@8 d078dc4]]
Cuando la edito más tarde no me da ese problema que raro ¿no?, pondré el código del botón aceptar
Código Java:
Ver originalprivate void btnaceptarActionPerformed
(java.
awt.
event.
ActionEvent evt
) { if(this.dtfecsubasta.getCalendar() == null || this.txtdirsubasta.getText().isEmpty() || this.txtsubsubasta.getText().isEmpty()){
Mensajes.MostrarAdvertencia("Ingrese los datos obligatorios (*)");
} else {
if(accion.equals("crear")){
try {
Direccion d = FacadeContr.getInstance().manDirecciones().findByX(this.txtdirsubasta.getText());
Subastador s = FacadeContr.getInstance().manSubastadores().findByX(this.txtsubsubasta.getText());
Subasta sub = new Subasta(Conversiones.CInt(this.txtnrosubasta.getText()), this.getDateTime(), d, s);
FacadeContr.getInstance().manSubastas().add(sub);
Mensajes.MostrarConfirmacion("Subasta Creada");
ventana.setTitle("Editar Subasta");
accion = "editar";
objs = FacadeContr.getInstance().manSubastas().findById(FacadeContr.getInstance().manSubastas().maxId()-1);
Mensajes.MostrarAdvertencia(ex.getMessage());
}
} else {
try {
Direccion d = FacadeContr.getInstance().manDirecciones().findByX(this.txtdirsubasta.getText());
Subastador s = FacadeContr.getInstance().manSubastadores().findByX(this.txtsubsubasta.getText());
Subasta sub = new Subasta(Conversiones.CInt(this.txtnrosubasta.getText()), this.getDateTime(), d, s);
sub.setVentas(objs.getVentas().toList());
sub.getVentas().toList().forEach((v) -> {
v.getKey().setObjs(sub);
});
FacadeContr.getInstance().manSubastas().edit(sub);
Mensajes.MostrarConfirmacion("Subasta Editada");
btncancelarActionPerformed(evt);
Mensajes.MostrarAdvertencia(ex.getMessage());
}
}
}
}
Espero sus respuestas y Saludos.