私はspring mvc 3.2とhibernate 3.6.3を使用してWebアプリケーションのビルドに取り組んでいます。 私はDAOクラスでHibernateDaoSupportクラスをextedしています。今度は、session.update()を使ってエンティティを更新したいのですが、hibernateDaoSupportメソッドからセッションを取得していますgetSession()。私はこれでも取引を利用しています。 しかし、トランザクションをコミットした後、更新はデータベースに反映されません。しかし、私がコミットする前にsession.flush()を使用している場合は、それが反映されます。 transaction.commitがコミット前にフラッシュすることを知っているので、なぜレコードを更新していないのですか?私はアプリケーション・コンテキストでトランザクション・マネージャを使用しておらず、トランザクションはhibernateaosupportによってどのように管理されていますか。 getSessionメソッドが現在のトランザクションからセッションをチェックするため、新しいセッションがアプリケーションで開かれた場合、それが見つかった場合はそれ以外のものを返します。これは、各http要求で新しい休止状態のセッションが開かれるかどうかを意味します。session.update()またはsession.save()のデータがデータベースに反映されていませんか?
マイダオコードがある -
public Map<String, Object> addImmunizationCard(Box box,
Map<String, Object> dataMap) {
Session session = (Session) getSession();
Map<String, Object> map = new HashMap<String, Object>();
Transaction tx = null;
try {
tx = session.beginTransaction();
MasBed bed = (MasBed)session.get(MasBed.class, new Integer(1101));
System.out.println(bed.getBedNo());
bed.setBedNo("Amit Das");
session.update(bed);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}
return map;
}
を参照してください? –
私はそうは考えていません.. createcriteriaはクエリを実行せず、自動コミットが設定されていない限り明示的にコミットする必要があります – OTM