Publico la solución para quien pueda llegar a tener este mismo problema. Después de investigar un poco más, encontré que nhibernate cuando ejecuta un stored procedure, por default, realiza un invalidate (evict) de las entidades y colecciones de la second level cache (lo pueden ver en el código fuente que detallaba arriba). Ahora bien, si en el tag *sql-query* agregamos *<synchronize table="">* se evita este comportamiento indeseado; es decir, tiene que estar la etiqueta "synchronize" con table="", si no existe, por default "sincroniza" todas las tablas (una feature??, tal vez...)
<sql-query ....> .... <synchronize table=*""*/> ... </sql-query> Esta info la encontré al final de este post https://www.link-intersystems.com/blog/2011/10/08/impact-of-native-sql-queries-on-hibernates-second-level-cache/ gracias de todos modos. Andrés Falcón. El miércoles, 11 de mayo de 2016, 12:52:56 (UTC-3), Andrés Falcón escribió: > > Buenos día grupo, acudo a uds a ver si me ayudan a solucionar un problema > que tengo hace unos días. > > Quisiera saber si es normal el comportamiento de siempre borrar la Caché > antes de ejecutar un stored procedure con *GetNamedQuery*. Me está > sucediendo que antes de que NHibernate ejecute el stored procedure hace un > Evict de los datos y las collections que tengo en la cache. > > Segun pude analizar con el código fuente, el tema está en la clase > *NativeSqlQueryPlan* (método CoordinateSharedCacheCleanup) crea un objeto > de tipo *BulkOperationCleanupAction* y es ahí donde veo que agrega estas > clases de la cache > > Intenté poner Cacheable(false) para la ejecución del SP y no pasó nada. > > Paso mi configuración de la caché para ver si estoy cometiendo un error o > me faltó configurar algo mas, dado que es la primera vez que utilizo Cache > > configuration.Cache(delegate(ICacheConfigurationProperties properties) > { > properties.Provider<NHibernate.Cache.HashtableCacheProvider>(); > properties.UseQueryCache = true; > }); > > configuration.EntityCache<FieldType>( > entityCacheconfig => {entityCacheconfig.Strategy = > EntityCacheUsage.ReadWrite; } > ); > configuration.EntityCache<FieldValue>( > entityCacheconfig => { entityCacheconfig.Strategy = > EntityCacheUsage.ReadWrite; } > ); > > Estoy usando nh 3.4.0.4000 > > Gracias! > > Andrés Falcón > > -- -- Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano@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+unsubscr...@googlegroups.com. Para obtener más opciones, visita https://groups.google.com/d/optout.