メソッドの小さな部分でトランザクションのロールバックを拒否する必要がありますが、メソッドの他の部分では標準の動作が必要なため、その方法がわかりません。
これは私のSpring、Hibernate構成です:
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
そして、例外の場合にトランザクションとロールバックを開くために、私のクラスは「@Transaction」アノテーションで宣言されています。ただし、db への重要な挿入後にコミットを強制する必要があります。これを行う方法?
これはコード例です:
@Transactional
public void myMethod(Object obj){
check.do();
check.control();
try{
dao.insert(obj);
fileWriter.write();
printer.print();
}catch(Exception e){
log.error(e);
}
}
try ステートメント (dao.insert) 内で行うことは、自動コミットで行う必要があります。これは、挿入後にトランザクションがロールバックされることを望まないためです。私の例では、printer.print() が失敗した場合、dao.insert() がロールバックしたくありません。ただし、この動作はこの試行内でのみ必要です。
ありがとう
編集
また、@Transactional アノテーションをリモートで作成し、dao.insert のためだけにプライベート トランザクション メソッドを作成しようとしましたが、tt が他のコンポーネント内のエンティティのすべての遅延読み込みに失敗した場合 (例: printer.print() など)。