A ver, se trata de un juego multijugador, por eso debo usar una sesion todo el rato (digamos que dura infinito, en realidad cada X tiempo se reiniciaría la aplicacion pero bueno), y es por eso que se me complica tanto. Respecto a lo del flush lo que se suele hacer es un flush cada X minutos en este tipo de aplicaciones, por eso no lo pongo auto. Aun debo estudiar como se realiza el flush pero daba por hecho el realizarlo cada X minutos, a no ser que me recomendeis otra cosa.
On 11 feb, 16:07, Carlos Peix <[email protected]> wrote: > Hola blacksid, > > Por algun motivo estas desestimando la solucion que te propuso Nelo mas > arriba? me refiero a la de configurar el flush en auto. > > ---------------------------------- > Carlos Peix > > 2012/2/11 BlackCid <[email protected]> > > > > > 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-Ocultartextode 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-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- 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
