Cita: Lo que necesito es cuando inserto con la clase detalles de proveedores desde una factura los productos hacer el update si existe en la tabla productos de cantidad y precio unitario o en su defecto si ese producto no existe, directamente darlo de alta.
No se entiende demasiado, pero lo que interpreto es que querés hacer una
transacción a nivel de persistencia, si existe dicho producto le haces update, sino es un alta.
Esto es un ejemplo para que solo mires a nivel genérico de qué va... una vez que entiendas la estructura te darás cuenta que no es difícil... primero da el alta, luego recupera el id que se generó para insertar filas con ese id pero en una nueva tabla... en resumen, se carga en una tabla el pedido y en otra las líneas del pedido, saludos
Código Java:
Ver original//Se agrega un pedido a la base para un cliente dado.
{
Class.forName(driver).newInstance();
st = con.createStatement();
String insert1
= "Insert into pedidos(idpersona,fechapedido, estadopedido, disponible ) values ('"+MiPedido.
getPersona().
getIdpersona()+"','"+MiPedido.
getFecha()+"','En cocina',1)";
int iSalidaPed = 0;
try {
con.setAutoCommit(false);
st = con.createStatement();
st.executeUpdate(insert1);
rs = st.executeQuery("Select LAST_INSERT_ID()");
if(rs.next())
{
iSalidaPed = rs.getInt(1);
}
for(Object element
: MiPedido.
getLineaPedido()) {
insert2 = "Insert into lineaspedidos (idpedido, cantidad, idplato) values ("+ iSalidaPed +"," + ((LineaPedido)element).getCantidad() + "," + ((LineaPedido)element).getPlato().getIdplato()+")";
st.executeUpdate(insert2);
}
con.commit();
st.close();
con.close();
}
{
con.rollback();
}
}