PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

hibernate insert batch avec postgresql partitionné

Vous pouvez essayer d'utiliser un Batcher personnalisé en définissant la propriété hibernate.jdbc.factory_class. S'assurer que l'hibernation ne vérifie pas le nombre de mises à jour des opérations par lots peut résoudre votre problème, vous pouvez y parvenir en faisant en sorte que votre Batcher personnalisé étende la classe BatchingBatcher, puis en remplaçant la méthode doExecuteBatch(...) pour qu'elle ressemble à :

    @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;
            }

        }

    }

Notez que la nouvelle méthode ne vérifie pas les résultats de l'exécution des instructions préparées. Gardez à l'esprit que cette modification peut affecter l'hibernation de manière inattendue (ou peut-être pas).