Producto
Cliente
Empleado
Factura
DetalleFactura
Esta es mi clase Venta
Código Java:
Esta es mi clase DetalleVentaVer original
package modelo; import java.util.HashSet; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; @Table(name = "venta", catalog = "bdventas" ) private int venId; private Empleado empleado; private Cliente cliente; private double venIgv; private double venTotal; private double venMontototal; public Venta() { this.venId = 0; this.cliente = new Cliente(); this.empleado = new Empleado(); } public Venta(int venId) { this.venId = venId; } public Venta(int venId, Empleado empleado, Cliente cliente, double venIgv, double venTotal, double venMontototal, String venIndicador, Set<DetalleVenta> detalleVentas) { this.venId = venId; this.empleado = empleado; this.cliente = cliente; this.venIgv = venIgv; this.venTotal = venTotal; this.venMontototal = venMontototal; this.venIndicador = venIndicador; this.detalleVentas = detalleVentas; } public Venta(int venId, Empleado empleado, Cliente cliente, double venIgv, double venTotal, double venMontototal, String venIndicador) { this.venId = venId; this.empleado = empleado; this.cliente = cliente; this.venIgv = venIgv; this.venTotal = venTotal; this.venMontototal = venMontototal; this.venIndicador = venIndicador; } @Id @Column(name = "ven_id", unique = true, nullable = false) public int getVenId() { return this.venId; } public void setVenId(int venId) { this.venId = venId; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "ven_empleado") public Empleado getEmpleado() { return this.empleado; } public void setEmpleado(Empleado empleado) { this.empleado = empleado; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "ven_cliente") public Cliente getCliente() { return this.cliente; } public void setCliente(Cliente cliente) { this.cliente = cliente; } @Column(name = "ven_IGV", precision = 8) public double getVenIgv() { return this.venIgv; } public void setVenIgv(double venIgv) { this.venIgv = venIgv; } @Column(name = "ven_total", precision = 8) public double getVenTotal() { return this.venTotal; } public void setVenTotal(double venTotal) { this.venTotal = venTotal; } @Column(name = "ven_montototal", precision = 8) public double getVenMontototal() { return this.venMontototal; } public void setVenMontototal(double venMontototal) { this.venMontototal = venMontototal; } @Column(name = "ven_indicador", length = 2) return this.venIndicador; } this.venIndicador = venIndicador; } @OneToMany(fetch = FetchType.LAZY, mappedBy = "venta") public Set<DetalleVenta> getDetalleVentas() { return this.detalleVentas; } public void setDetalleVentas(Set<DetalleVenta> detalleVentas) { this.detalleVentas = detalleVentas; } }
Código Java:
Ver original
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="modelo.Venta" table="venta" catalog="bdventas"> <id name="venId" type="int"> <column name="ven_id" /> <generator class="assigned" /> </id> <many-to-one name="empleado" class="modelo.Empleado" fetch="select"> <column name="ven_empleado" /> </many-to-one> <many-to-one name="cliente" class="modelo.Cliente" fetch="select"> <column name="ven_cliente" /> </many-to-one> <property name="venIgv" type="double"> <column name="ven_IGV" precision="8" /> </property> <property name="venTotal" type="double"> <column name="ven_total" precision="8" /> </property> <property name="venMontototal" type="double"> <column name="ven_montototal" precision="8" /> </property> <property name="venIndicador" type="string"> <column name="ven_indicador" length="2" /> </property> <set name="detalleVentas" table="detalle_venta" inverse="true" lazy="true" fetch="select"> <key> <column name="dv_venta" not-null="true" /> </key> <one-to-many class="modelo.DetalleVenta" /> </set> </class> </hibernate-mapping>
Nota: Las clases y los archivos hbm.xml, los genera el mismo netbeans, pues cuando lo hago manualmente, el archivo .cfg de hibernate no me reconoce.
Y este es un test que hice para guardar el proceso
Código Java:
Ver original
@Test public void addVenta() { Session session = HibernateUtil.getSessionFactory().openSession(); try { session.getTransaction().begin(); Venta venta = new Venta(); Set<DetalleVenta> detalles = new HashSet<DetalleVenta>(0); venta.setVenId(1); venta.setCliente(new Cliente(1)); venta.setEmpleado(new Empleado(1)); venta.setVenIgv(18.0); venta.setVenTotal(129.0); venta.setVenMontototal(523.3); venta.setVenIndicador("S"); detalles.add(new DetalleVenta(1, new Venta(1), new Producto(3), 5, 47.6, 87.2)); detalles.add(new DetalleVenta(2, new Venta(1), new Producto(1), 6, 44.6, 35.2)); detalles.add(new DetalleVenta(3, new Venta(1), new Producto(2), 7, 42.6, 326.2)); venta.setDetalleVentas(detalles); session.save(venta); session.getTransaction().commit(); session.getTransaction().rollback(); } session.close(); }
Y este es la clase que uso para guardar, es decir estuve viendo otra forma de guardar y nada.
Código Java:
Ver original
public void createVenta() { try { VentaDao ventaDao = new VentaDaoImpl(); String msg; this.venta.setCliente(cliente); this.venta.setVenIndicador("S"); int fila = dlgVentas.jTable1.getRowCount(); for (int i = 0; i < dlgVentas.jTable1.getRowCount(); i++) { this.dventa.setDvId(i + 1); this.dventa.setProducto(new Producto(Integer.parseInt(dlgVentas.jTable1.getValueAt(i, 1).toString()))); this.dventa.setVenta(this.venta); this.venta.getDetalleVentas().add(this.dventa); } if (ventaDao.create(this.venta)) { msg = "Venta Registrada"; Mensajes.informacion(msg); } else { msg = "Error al registrar la venta"; Mensajes.error(msg); } } }
En ambos casos solo me guarda la venta y no el detalle, espero alguien me pueda ayudar a dar solucion.
Gracias de antemano