![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_13.png?5a7ff87)
お世話になります。
spring-framework-1.2.8
hibernate-3.1
でwebアプリの開発を行っております。
宣言的トランザクション管理でDAO作成するために、
HibernateTemplate(org.springframework.orm.hibernate3.support.HibernateDaoSupport#getHibernateTemplate()で取得しています)
の各種メソッドでDBアクセスしていますが、条件付delete発行の方法がわかりません。
find()にはクエリ文字列を渡して検索するメソッドがあるのですが、delete()やupdate()にはクエリ文字列を受け取るメソッドがないようです。
HibernateTemplateを使用して条件付delete(SQLのdelete form xxx where xx=x の発行)やupdateは出来ないのでしょうか。
また、条件付deleteはどのように実現すればよいのでしょうか。
よろしくお願いします。
No.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();
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス 削除するレコードを含んだテーブルを指定してくださいのエラー対処方法 1 2022/11/24 15:01
- MySQL 下の画像はSQLの4大命令の性質をまとめたものであるらしいです UPDATE INSERT DELE 1 2023/06/07 15:36
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Visual Basic(VBA) シート削除のマクロで「deleteメソッドは失敗しました」となります。助けてください! Sub 不要 6 2022/09/08 16:41
- Visual Basic(VBA) Excelのマクロコードについて教えてください 1 2022/03/27 12:02
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
final修飾子を使っているのに、...
-
DataGridViewでセルクリックイ...
-
Labelコントロールに数字を代入...
-
javascriptからjavaを呼び出したい
-
配列のメソッド
-
アクセスVBA 時間を止める
-
JSPで<SELECT>の中にDBから持っ...
-
ウィンドウを最前面にできません
-
JAVA初心者です。JAVAで音を鳴...
-
【sendkeysメソッドが動かずに...
-
オーバーロードの「あいまい」...
-
(String args[])というメッソ...
-
引数で日付を2つ与え、その間の...
-
vbaエクセルマクロ RemoveDupli...
-
エクセルVBAにおけるON TIMEメ...
-
VBA コピーが出来ません…!
-
for文(拡張)内の変数(ローカ...
-
コマンドプロンプト実行後に画...
-
onClickで関数呼出し後に、結果...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
mainメソッドのthrows節で設定...
-
final修飾子を使っているのに、...
-
Labelコントロールに数字を代入...
-
onClickで関数呼出し後に、結果...
-
DataGridViewでセルクリックイ...
-
JSPで<SELECT>の中にDBから持っ...
-
コマンドプロンプト実行後に画...
-
Refreshメソッドの使い方
-
エクセルVBAにおけるON TIMEメ...
-
boolean型のフィールドとゲッタ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
配列のメソッド
-
【sendkeysメソッドが動かずに...
-
Excel VBA でExcelを終了したい...
-
VB.netで、シリアル通信のタイ...
-
worksheets & rows メソッドは...
-
Application.Wait の参照設定
-
(String args[])というメッソ...
おすすめ情報