私たちのJavaプロジェクトでは、休止状態とSpringでORMを使用しています。永続オブジェクトの削除で問題が発生しました。たとえば、このサンプルメソッドはIDでエンティティを取得し、それらを削除します。
@Transactional
public void remove(List<Long> ids) {
SearchTemplate template = new SearchTemplate();
template.addParameter("milestoneId",ids);
List <InvoiceQueue> items = this.findByCriteria(template);
...
this.delete(items);
}
メソッドは例外なくOKを実行しますが、実際にはDBからアイテムを削除しません。
メソッド定義に次のアノテーションを追加すると@Transactional(propagation = Propagation.REQUIRES_NEW)
、問題が解決します。
デフォルトの伝播タイプPROPAGATION_REQUIREDで機能しない理由を誰かが説明できますか?
前もって感謝します。
環境の詳細:
hibernate.version 3.5.5-Final、spring.version 3.0.5.RELEASE