Discussion:
[NHibernate-Hispano] Bloqueo Optimista
Edgar Ramos
2015-12-14 21:37:48 UTC
Permalink
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
ᐧ
<https://www.avast.com/?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
Este
correo electrónico se ha enviado desde un equipo libre de virus y protegido
por Avast.
www.avast.com
<https://www.avast.com/?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
<#DDB4FAA8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
--
--
Para escribir al Grupo, hágalo a esta dirección: NHibernate-***@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-hispano+***@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.
Gustavo Ringel
2015-12-14 21:54:13 UTC
Permalink
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.
Post by Edgar Ramos
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
ᐧ
<https://www.avast.com/?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Este
correo electrónico se ha enviado desde un equipo libre de virus y protegido
por Avast.
www.avast.com
<https://www.avast.com/?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
<#151a26d9bd7440d2_DDB4FAA8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
--
--
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
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
--
Para escribir al Grupo, hágalo a esta dirección: NHibernate-***@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-hispano+***@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.
Edgar Ramos
2015-12-14 21:57:41 UTC
Permalink
Gracias Gustavo, y es posible cambiar la version manualmente?
ᐧ
Post by Gustavo Ringel
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.
Post by Edgar Ramos
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
ᐧ
<https://www.avast.com/?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Este
correo electrónico se ha enviado desde un equipo libre de virus y protegido
por Avast.
www.avast.com
<https://www.avast.com/?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
<#151a27ca31c12d88_151a26d9bd7440d2_DDB4FAA8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
--
--
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
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
--
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
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
Saludos
Edgar
--
--
Para escribir al Grupo, hágalo a esta dirección: NHibernate-***@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-hispano+***@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.
Gustavo Ringel
2015-12-14 22:07:14 UTC
Permalink
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...
Post by Edgar Ramos
Gracias Gustavo, y es posible cambiar la version manualmente?
ᐧ
El 14 de diciembre de 2015, 16:54, Gustavo Ringel <
Post by Gustavo Ringel
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.
Post by Edgar Ramos
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
ᐧ
<https://www.avast.com/?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Este
correo electrónico se ha enviado desde un equipo libre de virus y protegido
por Avast.
www.avast.com
<https://www.avast.com/?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
<#151a27fcaa864dcf_151a27ca31c12d88_151a26d9bd7440d2_DDB4FAA8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
--
--
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
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
--
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
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
Saludos
Edgar
--
--
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
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
--
Para escribir al Grupo, hágalo a esta dirección: NHibernate-***@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-hispano+***@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.
Edgar Ramos
2015-12-15 14:38:10 UTC
Permalink
Gracias Gustavo, funciono todo muy bien
ᐧ
Post by Gustavo Ringel
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...
Post by Edgar Ramos
Gracias Gustavo, y es posible cambiar la version manualmente?
ᐧ
El 14 de diciembre de 2015, 16:54, Gustavo Ringel <
Post by Gustavo Ringel
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.
Post by Edgar Ramos
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
ᐧ
<https://www.avast.com/?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Este
correo electrónico se ha enviado desde un equipo libre de virus y protegido
por Avast.
www.avast.com
<https://www.avast.com/?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
<#151a288896b90fe6_151a27fcaa864dcf_151a27ca31c12d88_151a26d9bd7440d2_DDB4FAA8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
--
--
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
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
--
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
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
Saludos
Edgar
--
--
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
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
--
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
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
Saludos
Edgar
--
--
Para escribir al Grupo, hágalo a esta dirección: NHibernate-***@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-hispano+***@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.
Carlos Peix
2015-12-16 03:23:25 UTC
Permalink
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
Post by Edgar Ramos
Gracias Gustavo, y es posible cambiar la version manualmente?
ᐧ
El 14 de diciembre de 2015, 16:54, Gustavo Ringel <
Post by Gustavo Ringel
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.
Post by Edgar Ramos
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
ᐧ
<https://www.avast.com/?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Este
correo electrónico se ha enviado desde un equipo libre de virus y protegido
por Avast.
www.avast.com
<https://www.avast.com/?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
<#151a27fcaf5602eb_151a27ca31c12d88_151a26d9bd7440d2_DDB4FAA8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
--
--
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
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
--
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
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
Saludos
Edgar
--
--
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
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
--
Para escribir al Grupo, hágalo a esta dirección: NHibernate-***@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-hispano+***@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.
Loading...