Boa tarde galera, estou com um problema na hora de efetuar o rollback nas tabelas do banco.
Preciso salvar em duas tabelas, porem após a inserção no banco ele me gera um erro de MYSQLException e realiza o rollback na primeira tabela, mas na segunda tabela não
public boolean inserirProduto(ProdutoLojaExpressDTO[] produto) throws SQLException, ClassNotFoundException {
int codigoProduto = 0;
Date data = new Date();
String insertProduto = "INSERT INTO store_produtos(codigo, titulo, custo, "
+ "preco, peso, autor, medidas, alterado, secao, categoria, marca) VALUES(?,?,?,?,?,?,?,?,?,?,?) ";
String insertItem = "INSERT INTO store_itens(produto, item, estoque, ordem, "
+ "status, deletado, autor, alterado) VALUES(?,?,?,?,?,?,?,?)";
try (Connection conn = ConexaoNuvem.abrir()) {
conn.setAutoCommit(false);
//INSERT STORE_PRODUTOS --------------------------------------------
try {
for (ProdutoLojaExpressDTO produtoExpress : produto) {
PreparedStatement pstmt = conn.prepareStatement(insertProduto, RETURN_GENERATED_KEYS);
if (produtoExpress != null) {
pstmt.setString(1, produtoExpress.getCodigo());
pstmt.setString(2, produtoExpress.getTitulo());
pstmt.setDouble(3, produtoExpress.getCusto());
pstmt.setDouble(4, produtoExpress.getPreco());
pstmt.setDouble(5, produtoExpress.getPeso());
pstmt.setString(6, produtoExpress.getAutor());
pstmt.setString(7, produtoExpress.getMedidas());
pstmt.setTimestamp(8, new java.sql.Timestamp(data.getTime()));
pstmt.setInt(9, produtoExpress.getSecao());
pstmt.setInt(10, produtoExpress.getCategoria());
pstmt.setInt(11, produtoExpress.getMarca());
pstmt.executeUpdate();
try (ResultSet rs = pstmt.getGeneratedKeys()) {
if (rs.next()) {
codigoProduto = rs.getInt(1);
}
}
}
//INSERT STORE_ITENS -------------------------------------------
int i = 1;
PreparedStatement pstmtInsert = conn.prepareStatement(insertItem);
for (ItemLojaExpressDTO item : produtoExpress.getItem()) {
if (item != null) {
pstmtInsert.setInt(1, codigoProduto);
pstmtInsert.setString(2, item.getItem());
pstmtInsert.setInt(3, item.getEstoque());
pstmtInsert.setInt(4, i);
pstmtInsert.setString(5, item.getStatus());
pstmtInsert.setBoolean(6, item.isDeletado());
pstmtInsert.setString(7, item.getAutor());
pstmtInsert.setTimestamp(8, new java.sql.Timestamp(data.getTime()));
pstmtInsert.executeUpdate();
i++;
}
}
}
} catch (SQLException ex) {
conn.rollback();
}
conn.commit();
return true;
}
}
Alguém poderia me ajudar!?