Quantcast

Interesting Hibernate Message

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Interesting Hibernate Message

sclayman
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)
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Interesting Hibernate Message

graemer
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

Loading...