- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SpringのHibernate連携での条件指定delete)
SpringのHibernate連携で条件指定delete方法
このQ&Aのポイント
- SpringのHibernate連携で条件指定delete方法についてまとめました。
- HibernateTemplateを使用して条件付deleteやupdateはできません。
- 条件付deleteを実現する方法についても説明します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まったく自信ないですが、こんな感じで出来ないでしょうか? getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { int deletedEntities = session.createQuery("delete A where A.id>10").executeUpdate(); return null; } });
お礼
ありがとうございます。 お教えいただいた方法を、明日試させていただきます。 追って結果をご報告させていただきます。
補足
お教えいただいたとおり、以下のメソッドで実現できました。 本当にありがとうございます。 が、そもそもこのようなメソッドはhibernate的(Spring的?)ではなかったりするのでしょうか。 通常こういった要件(条件指定で一括削除)の場合はどうするのがよいのでしょうか。 たとえば、findで削除対象を検索した後、getHibernateTemplate().delete(Object);を繰り返すとか、deleteAll(Collection)で削除するほうがようのでしょうか。 public int deleteAttendances(final String uid, final String dateYm) { Object ret = getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Query query = session.createQuery( "delete Attendance a where a.comp_id.uid = ? and a.comp_id.dateYm = ?"); query.setString(0, uid); query.setString(1, dateYm); int deletedEntities = query.executeUpdate(); return new Integer(deletedEntities); } }); return ((Integer) ret).intValue(); }