Home > Software design >  Pessimistic Lock with Update Query
Pessimistic Lock with Update Query

Time:09-08

 Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        Query updateQuery = session.createQuery("UPDATE Lot l SET l.currentRate = l.currentRate   100, l.lastOwner = :lastowner WHERE l.id = :lotid", null);
        updateQuery.setLockMode(LockModeType.PESSIMISTIC_WRITE);

So, here is my code fragment. I got an exception: java.lang.IllegalStateException: Expecting a SELECT query : UPDATE Lot l SET l.currentRate = l.currentRate 100, l.lastOwner = :lastowner WHERE l.id = :lotid when I try to call setLockMode. Why? Am I doing something wrong?

CodePudding user response:

See the Java doc of the method you are trying to call: https://docs.oracle.com/javaee/6/api/javax/persistence/Query.html#setLockMode(javax.persistence.LockModeType)

It explicitly says, that an IllegalStateException will be thrown if you execute this on a non-SELECT statement.

  • Related