A ver el tema es el siguiente, primero hago el query para saber si esta el objeto, si no está hago new de un objeto, y le hago un save. El tema es que tal vez luego, y solo tal vez, lo necesitaré. Se trata de una aplicacion q van interactuando (con la misma sesión), asi que no puedo predecir el futuro.
De momento lo que he hecho es hacer una lista de los ids creados, no va del todo mal pero bueno si se pudiese usar nhibernate directamente, código q me ahorro. On 10 feb, 20:08, "[email protected]" <[email protected]> wrote: > Si, hasta donde recuerdo, si accedes a un objeto con el Get y lo tiene > en cache te trae ese (ya sea por el Save o porque lo consultaste antes > en esa session). El tema no es que no lo encuentre, sino que no sabe > si el objeto que está en cache cumple con las condiciones de la query. > > Si nos dieses un poco mas de contexto de lo que estás queriendo hacer, > quizás alguien tenga alguna idea de como solucionarlo. > > saludos. > nelo. > > 2012/2/10 BlackCid <[email protected]>: > > > > > Entonces la respuesta es No se puede. ¿No? > > De todas formas yo creo que es más por la cache de query, porque si > > hago un get, (que antes no habia hecho y por tanto no debe estar en > > caché), de su id lo pilla :-/, así que algo me dice que es porque > > primero ejecuto al query, luego hago el save y luego la vuelvo a > > ejecutar. Pero intento invalidar la query caché y no parece > > funcionar. > > ¿Que posibilidades tengo para invalidar la caché de query? A ver si > > estoy intentándolo bien... > > > Aunque a lo mejor tienes razón y ejecuta la query contra la base de > > datos pero el get si lo coja de su memoria. :S > > > On 10 feb, 04:02, "[email protected]" <[email protected]> > > wrote: > >> Seguramente porque tenés el FlushMode en Never o en Commit y la query > >> se ejecuta contra la DB... hasta donde recuerdo, NHibernate no tiene > >> un motor T-SQL para los objetos en RAM. > > >> Una opción sería que pases a FlushMode Auto y de esta forma NHibernate > >> hará automáticamente el Flush cuando detecte que el resultado de una > >> query se puede ver afectado por objetos cuyo estado todavía no fue > >> reflejado en la DB. > > >> Si vas por el FlushMode en Auto, debés manejar correctamente las > >> transacciones y no es compatible con CpBT ni con session que duren mas > >> que un request (pensando en una aplicación web). > > >> saludos. > >> nelo > > >> 2012/2/9 BlackCid <[email protected]>: > > >> > Ya, yo estoy hablando desde la misma sesión, pero resulta que hago un > >> > save de dicha entidad, y luego cuando hago una query no me sale. > > >> > On 8 feb, 17:14, "[email protected]" <[email protected]> > >> > wrote: > >> >> Desde la misma session SI, desde otra NO. El flush es justamente el > >> >> "pasaje" de la session a la db. (también influye como manejes la > >> >> transacción). > > >> >> saludos. > >> >> nelo > > >> >> 2012/2/8 BlackCid <[email protected]>: > > >> >> > Resulta qe en un momento dado creo una nueva entrada, pero hasta que > >> >> > no se hace un flush no puedo obtenerla, ¿hay alguna forma de > >> >> > recuperarla antes de hacer un flush? > > >> >> > -- > >> >> > Para escribir al Grupo, hágalo a esta dirección: > >> >> > [email protected] > >> >> > Para más, > >> >> > visite:http://groups.google.com/group/NHibernate-Hispano-Ocultartexto > >> >> > de la cita - > > >> >> - Mostrar texto de la cita - > > >> > -- > >> > Para escribir al Grupo, hágalo a esta dirección: > >> > [email protected] > >> > Para más, visite:http://groups.google.com/group/NHibernate-Hispano > > > -- > > Para escribir al Grupo, hágalo a esta dirección: > > [email protected] > > Para más, visite:http://groups.google.com/group/NHibernate-Hispano- Ocultar > > texto de la cita - > > - Mostrar texto de la cita - -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
