Spring Roo エンティティーのすべてのデータベース・エントリーを削除しようとしています。私が見ると*_Roo_Entity.aj
、「すべて削除」メソッドがないように見えます。私はそれを自分で実装しようとしました (Licences
は Roo エンティティの名前です。命名は気にしないでください。データベースからリバース エンジニアリングされたもので、後で変更される可能性があります):
public static int Licences.deleteAll() {
return entityManager().createQuery("delete from Licences o").executeUpdate();
}
問題なくコンパイルされますが、呼び出すLicences.deleteAll()
と次の例外が発生します。
org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query;
nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query (NativeException)
追加@Transactional
しても変わりません。
ここで何が欠けていますか?
このアプローチは完全に間違っていますか?次のように実装する必要があります:
public static void Licences.deleteAll() {
for (Licences licence : findAllLicenceses()) {
licence.remove();
}
}
これは機能しますが、JPA はこれをクエリに変換するほどスマートですか、それともクエリdelete from licences
を作成しますn
か?