Estou realizando um insert durante a etapa de process mas quando chegar no writer e faço outro está dando o seguinte erro, o segundo insert precisa da existencia do primeiro mas pelo oque vejo o commit não está sendo feito.
Estou usando banco de dados postgress.
org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [INSERT INTO tb_arq_parcela (id_arqparcela, id_arquivo, dt_posicao, cd_operacao, nu_parcela, dt_vencimento, dt_liquidacao, vl_parcela, vl_rec) VALUES (nextval(?), ?, ?, ?, ?, ?, ?, ?, ?)]; ERROR: insert or update on table "tb_arq_parcela" violates foreign key constraint "tb_arq_tb_arq_prc_fk"
Detalhe: Key (id_arquivo)=(104) is not present in table "tb_arquivo".; nested exception is org.postgresql.util.PSQLException: ERROR: insert or update on table "tb_arq_parcela" violates foreign key constraint "tb_arq_tb_arq_prc_fk"
Detalhe: Key (id_arquivo)=(104) is not present in table "tb_arquivo".
Writer:
@Bean("atvProOpeWriter")
public JdbcBatchItemWriter<AtividadesProgramadasOperacoesOut> save(DataSourceConfig dataSourceConfig) {
return new JdbcBatchItemWriterBuilder<AtividadesProgramadasOperacoesOut>()
.dataSource(dataSourceConfig.getDataSource())
.sql(INSERT_QUERY)
.itemPreparedStatementSetter(itemPreparedStatementSetter())
.build();
}
private ItemPreparedStatementSetter<AtividadesProgramadasOperacoesOut> itemPreparedStatementSetter() {
return new ItemPreparedStatementSetter<AtividadesProgramadasOperacoesOut>() {
@Override
public void setValues(AtividadesProgramadasOperacoesOut atvProOpe, PreparedStatement ps) throws SQLException {
ps.setString(1, TABELA_PARCELAS_OPERACOES.getName());
ps.setLong(2, atvProOpe.getId());
ps.setDate(3, atvProOpe.getDataMovimento());
ps.setString(4, atvProOpe.getNumeroOperacao());
ps.setString(5, atvProOpe.getIdentificadorParcela());
ps.setDate(6, atvProOpe.getDataVencimentoParcela());
ps.setDate(7, atvProOpe.getDataLiquidacaoParcela());
ps.setBigDecimal(8, atvProOpe.getValorParcela());
ps.setBigDecimal(9, atvProOpe.getValorPago());
}
};
}