sql >> Base de Datos >  >> RDS >> PostgreSQL

hibernate insertar lote con postgresql particionado

Es posible que desee intentar usar un Batcher personalizado configurando la propiedad hibernate.jdbc.factory_class. Asegurarse de que hibernate no verifique el recuento de actualizaciones de las operaciones por lotes podría solucionar su problema, puede lograrlo haciendo que su Batcher personalizado amplíe la clase BatchingBatcher y luego anulando el método doExecuteBatch(...) para que se vea así:

    @Override
    protected void doExecuteBatch(PreparedStatement ps) throws SQLException, HibernateException {
        if ( batchSize == 0 ) {
            log.debug( "no batched statements to execute" );
        }
        else {
            if ( log.isDebugEnabled() ) {
                log.debug( "Executing batch size: " + batchSize );
            }

            try {
//              checkRowCounts( ps.executeBatch(), ps );
                ps.executeBatch();
            }
            catch (RuntimeException re) {
                log.error( "Exception executing batch: ", re );
                throw re;
            }
            finally {
                batchSize = 0;
            }

        }

    }

Tenga en cuenta que el nuevo método no verifica los resultados de ejecutar las declaraciones preparadas. Tenga en cuenta que hacer este cambio podría afectar a Hibernate de alguna manera inesperada (o tal vez no).