0

Spring Boot + Hibernate を使用して、nameQuery または nativeQuery を使用してデータを一括削除しようとしています。いくつかの要素には制約違反があり、Spring/Hibernate はロールバック全体を生成します。

ロールバックを回避することは可能ですか? つまり、削除するレコードは 100 個で、3 個には制約があるため、Hibernate は 100 個のロールバックを生成しますが、ロールバックする必要があるのは 3 個だけで、97 個の要素を削除したいと考えています。今、私は悪い解決策を作成しました.forループを使用して100個のSQLクエリを実行しました。

サービス層:

@Transactional(noRollbackFor = { 
        SQLIntegrityConstraintViolationException.class,
        PersistenceException.class,
        ConstraintViolationException.class, 
        DataIntegrityViolationException.class })
public int deleteAll(String ids[]) {
    call.dao.delete(ids)
}

休止状態レイヤー:

delete(String ids[]) {
   sql = "DELETE from mae1000 as x WHERE x.idccty in (:ids)";

   int r = getCurrentSession().createNativeQuery(sql).setParameter("ids", Arrays.asList(ids)).executeUpdate();
}       
4

0 に答える 0