On Oracle you can do this:
SELECT object.ID FROM TABLE object FOR UPDATE OF object.ID
giving you back the id and locking lines.
But with Hibernate it's not working.
Query q = session.createQuery("SELECT object.ID FROM TABLE object");
q.setLockMode("object",LockMode.UPGRADE);
q.list();
This code generate the following error:
Exception in thread "Thread-0" java.lang.IllegalArgumentException: alias not found: obj at org.hibernate.loader.hql.QueryLoader.applyLocks(QueryLoader.java:299) at org.hibernate.loader.Loader.preprocessSQL(Loader.java:189) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1552) at org.hibernate.loader.Loader.doQuery(Loader.java:661) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224) at org.hibernate.loader.Loader.doList(Loader.java:2145) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029) at org.hibernate.loader.Loader.list(Loader.java:2024) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375) at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308) at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
What's working actually :
Query q = session.createQuery("SELECT object FROM TABLE object");
q.setLockMode("object",LockMode.UPGRADE);
q.list();
Does anyone know how to make this work?
thanks for help
|