|
I recently got this message when I hit a page.
I assume I am doing something wrong somewhere, but not being a Hibernate user I'm not entirely sure what caused it. Any ideas anyone. Here is the message and a bit of the stack trace: Object of class [Media] with identifier [643]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [Media#643] org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Object of class [Media] with identifier [643]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [Media#643] Caused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [Media#643] at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1714) at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2357) at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2257) at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2557) at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000) at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:388) at org.codehaus.groovy.grails.orm.hibernate.support.GrailsOpenSessionInViewInterceptor.flushIfNecessary(GrailsOpenSessionInViewInterceptor.java:37) at org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor.postHandle(OpenSessionInViewInterceptor.java:170) at org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.postHandle(WebRequestHandlerInterceptorAdapter.java:61) at org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:247) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:736) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350) at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) |
|
Grails uses optimistic locking (or versioning) under the covers. This
means that it allows concurrent modification to data (domain classes) but does a check at the last minute to see if someone else (another thread) has update the data before saving it If someone else has updated the data you get a StaleObjectStateException So what can you do? Well you can either catch the exception and then call "refresh()" on your object and try to re-concile the changes or in SVN at the moment you can use pessimistic locking (which is the same as "select ..for update" at the db level def b = Book.get(10) b.lock() // lock it ..// do work b.save() The row that is represented by the object will be unlocked when the transaction is committed Cheers On 9/13/07, stuart clayman <[hidden email]> wrote: > > I recently got this message when I hit a page. > > I assume I am doing something wrong somewhere, but not being > a Hibernate user I'm not entirely sure what caused it. > > Any ideas anyone. > > Here is the message and a bit of the stack trace: > > Object of class [Media] with identifier [643]: optimistic locking failed; > nested exception is org.hibernate.StaleObjectStateException: Row was updated > or deleted by another transaction (or unsaved-value mapping was incorrect): > [Media#643] > org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: > Object of class [Media] with identifier [643]: optimistic locking failed; > nested exception is org.hibernate.StaleObjectStateException: Row was updated > or deleted by another transaction (or unsaved-value mapping was incorrect): > [Media#643] > Caused by: > org.hibernate.StaleObjectStateException: Row was updated or deleted by > another transaction (or unsaved-value mapping was incorrect): [Media#643] > > > at > org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1714) > at > org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2357) > at > org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2257) > at > org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2557) > at > org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92) > at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248) > at > org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232) > at > org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140) > at > org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) > at > org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) > at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000) > at > org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:388) > at > org.codehaus.groovy.grails.orm.hibernate.support.GrailsOpenSessionInViewInterceptor.flushIfNecessary(GrailsOpenSessionInViewInterceptor.java:37) > at > org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor.postHandle(OpenSessionInViewInterceptor.java:170) > at > org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter.postHandle(WebRequestHandlerInterceptorAdapter.java:61) > at > org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:247) > at > org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:736) > at > org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396) > at > org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) > > -- > View this message in context: http://www.nabble.com/Interesting-Hibernate-Message-tf4437074.html#a12659153 > Sent from the grails - user mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe from this list please visit: > > http://xircles.codehaus.org/manage_email > > -- Graeme Rocher Grails Project Lead http://grails.org --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email |
| Powered by Nabble | Edit this page |
