Bloqueo Optimista

17 views
Skip to first unread message

Edgar Ramos

unread,
Dec 14, 2015, 4:37:50 PM12/14/15
to nhibernat...@googlegroups.com
Gente un saludo

Testeando concurrencia, me topo que en dos sessions diferentes si el mismo objeto es cambiado una propiedad por un valor nuevo, en la otra session me lanza un error de tipo StaleObjectStateException, lo cual es correcto, ya que dicha entidad tiene una propiedad de version para el manejo del bloqueo optimista.

Todo hasta aqui bien, mi problema se da cuando, a la entidad en mencion, la actualizo (actualizo la misma propiedad) con el mismo valor que ya posee, si antes tenia un valor de 5, le actualizo nuevamente con 5, en esta session se hace commit, todo bien, pero en la otra session no me salta ningun error, y procede a actualizarse la entidad con el campo correspondiente.

Este resultado no lo esperaba, alguna sugerencia?

Muchas gracias


--
Saludos
Edgar
Este correo electrónico se ha enviado desde un equipo libre de virus y protegido por Avast.
www.avast.com

Gustavo Ringel

unread,
Dec 14, 2015, 4:54:15 PM12/14/15
to nhibernate-hispano
Si tenía 5 y lo "cambiás" a 5 y es el único "cambio" que hiciste en la entidad para NH la entidad no cambió y ni siquiera va a aumentar la versión.
Para que la versión cambie algún valor tiene que ser distinto de lo que se obtuvo de la base de datos.

--
--
Para escribir al Grupo, hágalo a esta dirección: NHibernat...@googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
---
Has recibido este mensaje porque estás suscrito al grupo "NHibernate-Hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a nhibernate-hisp...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Edgar Ramos

unread,
Dec 14, 2015, 4:57:42 PM12/14/15
to nhibernat...@googlegroups.com
Gracias Gustavo, y es posible cambiar la version manualmente?
--
Saludos
Edgar

Gustavo Ringel

unread,
Dec 14, 2015, 5:07:15 PM12/14/15
to nhibernate-hispano
Se puede hacer trucos con interceptor para hacerle pensar a NHibernate que IsDirty=true, podés googlear eso, pero yo lo que harías más fácil es mantener un campo de fecha de última modificación de tipo timestamp y actualizarlo...ese siempre va a ser dirty...


Edgar Ramos

unread,
Dec 15, 2015, 9:38:12 AM12/15/15
to nhibernat...@googlegroups.com
Gracias Gustavo, funciono todo muy bien

Carlos Peix

unread,
Dec 15, 2015, 10:23:46 PM12/15/15
to nhibernate-hispano
Como diría el Tano: cuidado cuando tenés que hacer estas cosas. Puede que te estés apartando de un diseño con objetos y, por lo la O de ORM ya se complica.

----------------------------------
Carlos Peix
Reply all
Reply to author
Forward
0 new messages