Aplicando el patrón DAO, representamos las tablas como clases:
Creamos un método en el DAO de Request (pedido) que busque un pedido por ID:
Creamos un método que inserte un Ticket con un Request especificado:
Así o mantenemos simple y ordenado. Primero buscamos el pedido por ID. Si éste existe, creamos un nuevo objeto Ticket le asignamos un ID, un total y le asociamos un pedido (Request). Luego lo insertamos en la BD:
Te recomiendo que uses el framework ORM Hibernate. Lee al respecto.
Código (java) [Seleccionar]
public class Ticket {
private int id;
private Request request;
private double total;
public Ticket() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Request getRequest() {
return request;
}
public void setRequest(Request request) {
this.request = request;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
}
Código (java) [Seleccionar]
public class Request {
private int id;
private int state;
public Request() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
}
Creamos un método en el DAO de Request (pedido) que busque un pedido por ID:
Código (java) [Seleccionar]
public Request find(String id) {
String sql = "SELECT * FROM pedidos WHERE id_pedido = ?";
PreparedStatement preparedStatement= null;
Connection connection = null;
ResultSet result = null;
Request request = null;
try {
connection = DBHelper.getConnection();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,id);
result = preparedStatement.executeQuery();
if(result.next()) {
request = new Request();
while(result.next()) {
request.setId(result.getString("request_id"));
request.setState(result.getInt("state"));
}
}
} catch (SQLException | NullPointerException e) {
logger.error("Ha ocurrido un error: "+e.getLocalizedMessage());
} finally {
if(connection != null)
connection.close();
if(preparedStatement != null)
preparedStatement.close();
if(result != null)
result.close();
}
return request;
}
Creamos un método que inserte un Ticket con un Request especificado:
Código (java) [Seleccionar]
public boolean insertTicket(Ticket ticket) {
String SQL = "INSERT INTO tickets(ticket_id, pedido_id, total)
VALUES(?,?,?)";
PreparedStatement preparedStatement= null;
Connection connection = null;
boolean operationState = false;
try {
connection = DBHelper.getConnection();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1,ticket.getId());
preparedStatement.setInt(2,ticket.getRequest().getId());
preparedStatement.setDouble(3,total);
operationState = preparedStatement.executeUpdate();
} catch (SQLException | NullPointerException e) {
logger.error("Ha ocurrido un error: "+e.getLocalizedMessage());
} finally {
if(connection != null)
connection.close();
if(preparedStatement != null)
preparedStatement.close();
}
return operationState;
}
Así o mantenemos simple y ordenado. Primero buscamos el pedido por ID. Si éste existe, creamos un nuevo objeto Ticket le asignamos un ID, un total y le asociamos un pedido (Request). Luego lo insertamos en la BD:
Código (java) [Seleccionar]
Request request = find(REQUEST_ID);
if(request != null) {
Ticket ticket = new Ticket();
ticket.setId(1);
ticket.setRequest(request);
ticket.setTotal(2000);
insertTicket(ticket);// o utilizar el boolean devuelto para algo...
}
else {
// mostrarle al usuario que el pedido no existe
}
Te recomiendo que uses el framework ORM Hibernate. Lee al respecto.