Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/04/2017, 22:25
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Guardar OneToMany Hibernate

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
  1. public class Subasta implements Serializable
  2. {
  3.     @Id
  4.     @GeneratedValue(strategy = GenerationType.IDENTITY)
  5.     @Column(name = "suId")
  6.     private int id;
  7.     @Column(name = "suFecha")
  8.     private GregorianCalendar fecha;
  9.     @ManyToOne(cascade = CascadeType.ALL)
  10.     @JoinColumn(name = "dirId")
  11.     private Direccion direccion;
  12.     @ManyToOne(cascade = CascadeType.ALL)
  13.     @JoinColumn(name = "subId")
  14.     private Subastador subastador;
  15.     //aqui empiezan mis problemas
  16.     @OneToMany(mappedBy = "subasta",cascade = CascadeType.ALL)
  17.     private List<Venta>ventas;
  18.     ..........................
  19.    
  20.     public void addVenta(Venta v){
  21.         v.setSubasta(this);
  22.         ventas.add(v);        
  23.     }
  24.     public void delVenta(Venta v){
  25.         ventas.remove(v);
  26.     }
  27. }

Código Java:
Ver original
  1. package app.model.entity;
  2. import java.io.Serializable;
  3. import java.util.List;
  4. import javax.persistence.*;
  5. @Table(name = "ventas")
  6. public class Venta implements Serializable
  7. {
  8.     @EmbeddedId
  9.     private VentaKey key;
  10.     @JoinColumns({
  11.         @JoinColumn(name = "SuId",referencedColumnName = "suId"),
  12.     })
  13.     @ManyToOne(cascade = CascadeType.ALL)
  14.     private Subasta subasta;
  15.     @ManyToOne(cascade = CascadeType.ALL)
  16.     @JoinColumn(name = "estId")
  17.     private Estado obje;
  18.     @OneToMany(cascade = CascadeType.ALL, mappedBy = "venta")    
  19.     private List<Registro>registros;
  20.     public Subasta getSubasta() {
  21.         return subasta;
  22.     }
  23.     public void setSubasta(Subasta subasta) {
  24.         this.subasta = subasta;
  25.     }
  26.     public VentaKey getKey() {
  27.         return key;
  28.     }
  29.     public void setKey(VentaKey key) {
  30.         this.key = key;
  31.     }    
  32.     public Estado getObje() {
  33.         return obje;
  34.     }
  35.     public void setObje(Estado obje) {
  36.         this.obje = obje;
  37.     }
  38.     public List<Registro> getRegistros() {
  39.         return registros;
  40.     }
  41.     public void setRegistros(List<Registro> registros) {
  42.         this.registros = registros;
  43.     }    
  44.     public Venta() { }        
  45.     public Venta(Subasta xobjs, Artefacto xobja, Estado obje) {
  46.         this.key = new VentaKey(xobjs,xobja);
  47.         this.obje = obje;
  48.     }    
  49.     @Override
  50.     public boolean equals(Object obj) {
  51.         if(obj instanceof Venta){
  52.             Venta v  =(Venta)obj;
  53.             return v.key.getObja() == this.key.getObja() && v.obje.equals(this.obje);
  54.         } else {
  55.             return false;
  56.         }
  57.     }
  58.     @Override
  59.     public int hashCode() {
  60.         int hash = 17;
  61.         hash = 31 * hash + this.key.getObja().hashCode();
  62.         hash = 31 * hash + this.obje.hashCode();
  63.         return hash;
  64.     }
  65.     @Override
  66.     public String toString() {
  67.         return this.key.getObja().getNombre() + " - estado: " + this.obje.getNombre();
  68.     }  
  69. }

Pero en el formulario lo tengo así:

Código Java:
Ver original
  1. private void btnaceptarActionPerformed(java.awt.event.ActionEvent evt) {                                          
  2.         if(this.dtfecsubasta.getCalendar() == null || this.txtdirsubasta.getText().isEmpty() || this.txtsubsubasta.getText().isEmpty()){
  3.             Mensajes.MostrarAdvertencia("Ingrese los datos obligatorios (*)");
  4.         } else {
  5.             if(accion.equals("crear")){
  6.                 try {
  7.                     Direccion d = FacadeContr.getInstance().manDirecciones().findByX(this.txtdirsubasta.getText());
  8.                     Subastador s = FacadeContr.getInstance().manSubastadores().findByX(this.txtsubsubasta.getText());
  9.                     Subasta sub = new Subasta(0, this.getDateTime(), d, s);                    
  10.                     sub.setVentas(((ModeloVenta)mv.getModelo()).getDatos().toList());                    
  11.                     FacadeContr.getInstance().manSubastas().add(sub);                
  12.                     Mensajes.MostrarConfirmacion("Subasta Creada");                    
  13.                     btncancelarActionPerformed(evt);
  14.                 } catch (Exception ex) {
  15.                     Mensajes.MostrarAdvertencia(ex.getMessage());
  16.                 }
  17.             } else {
  18.                 try {
  19.                     Direccion d = FacadeContr.getInstance().manDirecciones().findByX(this.txtdirsubasta.getText());
  20.                     Subastador s = FacadeContr.getInstance().manSubastadores().findByX(this.txtsubsubasta.getText());
  21.                     Subasta sub = new Subasta(Conversiones.CInt(this.txtnrosubasta.getText()), this.getDateTime(), d, s);
  22.                     sub.setVentas(((ModeloVenta)mv.getModelo()).getDatos().toList());
  23.                     FacadeContr.getInstance().manSubastas().edit(sub);                
  24.                     Mensajes.MostrarConfirmacion("Subasta Editada");
  25.                     btncancelarActionPerformed(evt);
  26.                 } catch (Exception ex) {
  27.                     Mensajes.MostrarAdvertencia(ex.getMessage());
  28.                 }
  29.             }            
  30.         }
  31.     }

Pero no me guarda las ventas de la subasta y no se que rayos hacer...

Espero sus respuestas y saludos.