質問

私は取得するリスト内のオブジェクhibernateの使用基準APIに含まれています。しかしいロックそれらのオブジェクトとして別のスレッドの実行を同時に取得しまの正確なオブジェのみのスレッドが成功するな悲観的ロックになっています。

また以下のような準備があり、びっくりしました。

List esns = session
    .createCriteria(Reddy_Pool.class)
    .add(Restrictions.eq("status", "AVAILABLE"))
    .add(Restrictions.eq("name", "REDDY2"))
    .addOrder(Order.asc("id"))
    .setMaxResults(n)
    .setLockMode(LockMode.PESSIMISTIC_WRITE) //not working at all
    .list();

更新:を行った更新後、本書でし上がって頂きたいという両方のスレッドが読み別の行は少なくとも第二のスレッドの待機するまでの最初のスレッドが完了する取引や葉、ロックが解除されます。

やhibernateの発生するクエリは以下になります。

Hibernate: select this_.id as id1_0_, this_.name as name1_0_, 
this_.orderitem_id as orderitem3_1_0_, this_.status as status1_0_, 
this_.store as store1_0_, this_.vendor as vendor1_0_, this_.version as version1_0_ 
from reddy_pool this_ 
where this_.status=? and and this_.name=? order by this_.id asc limit ?

更新:このように見えるバグを修正3.5.2バージョンに対してパスカルThivent(確認くださいパスカル)について、参加メンバーとしての意思が課題です。思いを次のリリースで実現されます。

しかしを使ってみましたもう一つのアプローチここ session.buildLockRequest()...がんなどに使用すると、下記コードを一切有しない。

for (int i=0; i < n; i++)
    session.buildLockRequest(LockOptions.UPGRADE).lock(esns.get(i));
役に立ちましたか?

解決

何版Hibernateます。さらに、これが HHH-5275?せていただきましたの FOR UPDATE 決ん生まれたのであろうか。で"セレクションガイド"タブでは、生成されたSQL?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top