0
按照LockMode.READ :-此鎖定模式中的對象是從當前事務的數據庫中讀取的,而不是從緩存中取出。問題我在LockMode.READ在休眠期間?
所以,我想下面的代碼片段
Session session = sessions.openSession();
tx = session.beginTransaction();
person = (Person)session. get(Person.class,1);//Line1
session.lock(person, LockMode.READ);//Line2
person = (Person)session. get(Person.class,1);//Line3
在第1行數據庫查詢,因爲我得到的人第一次在會議上被解僱了。
根據以上定義的LockMode.READ
我期待數據庫查詢在第3行觸發。但它沒有 - 爲什麼?
只是爲了它得到了第1行發射信息的查詢是
Select person0_.id as id0_1_, person0_.cname as cname0_1_,
person0_.addressId1 as addressId3_0_1_, address1_.id as id1_0_, address1_.personId
as personId1_0_, address1_.addressLine1 as addressL3_1_0_ from MyProject1.Person
person0_, MyProject1.Address address1_ where person0_.addressId1=address1_.id(+)
and person0_.id=?
編輯
Session session = sessions.openSession();
tx = session.beginTransaction();
person = (Person)session. get(Person.class,1);
tx.commit();
session.close();
Session session = sessions.openSession();
tx = session.beginTransaction();
person = (Person)session. get(Person.class,1);//Line1
session.lock(person, LockMode.READ);//Line2
person = (Person)session. get(Person.class,1);//Line3
tx.commit();
session.close();
現在,在第2行,我看到多了一個查詢被解僱是選擇ID從MyProject1.Person其中id =?但它不會觸發人員對於id 1的查詢,並且不會在第2行和第3行中獲取更新人員值。
嗨mikko。看到我編輯的帖子。即使我正在進入另一個事務,即使LockMode.read也不會從數據庫獲取值 –