Java hibernate:在两个请求中选择更新

Java hibernate:在两个请求中选择更新,java,hibernate,jpa,Java,Hibernate,Jpa,在我的springBoot项目中,我使用hibernate获取oracle数据库的锁 在我的事务中,我执行以下代码: Query q = em.createQuery("SELECT m FROM myTablem WHERE foo= :cat"); q.setParameter("cat", myValue); q.setMaxResults(1); //use pessimistic lock //With Oracle, the select is a 'select for upda

在我的springBoot项目中,我使用hibernate获取oracle数据库的锁

在我的事务中,我执行以下代码:

Query q = em.createQuery("SELECT m FROM myTablem WHERE foo= :cat");
q.setParameter("cat", myValue);
q.setMaxResults(1);

//use pessimistic lock
//With Oracle, the select is a 'select for update' request
q.setLockMode(LockModeType.PESSIMISTIC_WRITE);

//set hibernate timeout to 0
//With Oracle, the 'select for update' is transformed in 'select for update nowait'
q.setHint("javax.persistence.lock.timeout", 0);

List<Msisdn> msisdns = q.getResultList();
我想在我的数据库上执行select for update。 但通过这段代码,hibernate执行两个请求:


休眠:选择*从选择m。。。。。从myTablem m交叉连接分类标准分类1,其中m.foo=。。。其中rownum禁用后续锁定:

升级到Hibernate 5.2.1 将数据库升级到12c并使用Oracle12cDialect,或者将查询提示设置为false 有关更多信息,请参阅