Hola a todos, quería hacerles la siguiente consulta: Estoy usando hibernate y hasta ahora no he tenido problemas excepto para guardar una entidad que tiene una colección onetomany, y no he podido guardar, pongo el código:
Código Java:
Ver original{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "suId")
private int id;
@Column(name = "suFecha")
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "dirId")
private Direccion direccion;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "subId")
private Subastador subastador;
//aqui empiezan mis problemas
@OneToMany(mappedBy = "subasta",cascade = CascadeType.ALL)
private List<Venta>ventas;
..........................
public void addVenta(Venta v){
v.setSubasta(this);
ventas.add(v);
}
public void delVenta(Venta v){
ventas.remove(v);
}
}
Código Java:
Ver originalpackage app.model.entity;
import java.io.Serializable;
import java.util.List;
import javax.persistence.*;
@Table(name = "ventas")
{
@EmbeddedId
private VentaKey key;
@JoinColumns({
@JoinColumn(name = "SuId",referencedColumnName = "suId"),
})
@ManyToOne(cascade = CascadeType.ALL)
private Subasta subasta;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "estId")
private Estado obje;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "venta")
private List<Registro>registros;
public Subasta getSubasta() {
return subasta;
}
public void setSubasta(Subasta subasta) {
this.subasta = subasta;
}
public VentaKey getKey() {
return key;
}
public void setKey(VentaKey key) {
this.key = key;
}
public Estado getObje() {
return obje;
}
public void setObje(Estado obje) {
this.obje = obje;
}
public List<Registro> getRegistros() {
return registros;
}
public void setRegistros(List<Registro> registros) {
this.registros = registros;
}
public Venta() { }
public Venta(Subasta xobjs, Artefacto xobja, Estado obje) {
this.key = new VentaKey(xobjs,xobja);
this.obje = obje;
}
@Override
public boolean equals
(Object obj
) { if(obj instanceof Venta){
Venta v =(Venta)obj;
return v.key.getObja() == this.key.getObja() && v.obje.equals(this.obje);
} else {
return false;
}
}
@Override
public int hashCode() {
int hash = 17;
hash = 31 * hash + this.key.getObja().hashCode();
hash = 31 * hash + this.obje.hashCode();
return hash;
}
@Override
return this.key.getObja().getNombre() + " - estado: " + this.obje.getNombre();
}
}
Pero en el formulario lo tengo así:
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(0, this.getDateTime(), d, s);
sub.setVentas(((ModeloVenta)mv.getModelo()).getDatos().toList());
FacadeContr.getInstance().manSubastas().add(sub);
Mensajes.MostrarConfirmacion("Subasta Creada");
btncancelarActionPerformed(evt);
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(((ModeloVenta)mv.getModelo()).getDatos().toList());
FacadeContr.getInstance().manSubastas().edit(sub);
Mensajes.MostrarConfirmacion("Subasta Editada");
btncancelarActionPerformed(evt);
Mensajes.MostrarAdvertencia(ex.getMessage());
}
}
}
}
Pero no me guarda las ventas de la subasta y no se que rayos hacer...
Espero sus respuestas y saludos.