Hi

Thanks for your (fast ^^) help, i didn't have exactly understand that a
"JIRA" was. (with my poor english level...)

So i try today if the trunk can help me ; I just hope that hibernate don't
create ISession alone and so that this GetSessionByName() method in
Burrow is every time called...

I will write here the issue of this problem.

JbM
2009/1/27 Oscar Orduz Acosta <[email protected]>

> Hello JbM:
> This JIRA has applied, so if you work with the trunk version you will see
> another overload method of GetSession, wich accept an string (this is the
> GetSessionByName).
>
>
> https://nhibernate.svn.sourceforge.net/svnroot/nhcontrib/trunk/src/NHibernate.Burrow/
>
> Respect to the issue you mentioned, I believe the problem is elsewhere
> becouse the only responsability of this method is bring a ISession. But you
> can try with the trunk
>
>
> Oscar
>
> 2009/1/27 JbM <[email protected]>
>
>
>> Oscar
>>
>> Thanks a lot for your posts. I use your method BurrowFramework
>> ().GetSessionByName(string PersitenceName);
>>
>> But It does'nt work if the Session is directly called by Hibernate (i
>> think) and if the Entity is not a NHibernateProxy.
>>
>> In fact, i have an exception in SessionImpl.cs in the method : public
>> object GetIdentifier(object obj)
>>
>> (...)
>> if (obj is INHibernateProxy)
>> {
>>        ILazyInitializer li = ((INHibernateProxy)
>> obj).HibernateLazyInitializer;
>>        if (li.Session != this)
>>        {
>>                throw new TransientObjectException("The proxy was not
>> associated
>> with this session");
>>        }
>>        return li.Identifier;
>> }
>> else
>> {
>>        EntityEntry entry = persistenceContext.GetEntry(obj); //HERE IS THE
>> PROBLEM : not the good persistenceContext ??
>>        if (entry == null) //entry is not find :(
>>        {
>>                throw new TransientObjectException("the instance was not
>> associated
>> with this session");
>>        }
>>        return entry.Id;
>> }
>> (...)
>>
>> I don't know how resolve this problem :(
>>
>> JbM
>>
>> On 26 déc 2008, 23:30, "Oscar Orduz Acosta" <[email protected]> wrote:
>> > You're welcome Manu,
>> >
>> > BTW: The JIRA ticked has been submited.
>> >
>> > Oscar
>> >
>> > 2008/12/24 Manu <[email protected]>
>>  >
>> >
>> >
>> >
>> >
>> > > Oscar,
>> >
>> > > Sorry for the late reply. I had been very busy with some deadlines...
>> >
>> > > Thank you very much for your code. You have saved me a lot of time. It
>> > > is exactly what I need!
>> >
>> > > On 19 dic, 23:00, "Oscar Orduz Acosta" <[email protected]> wrote:
>> > > > Hello Manu:
>> >
>> > > > I had similar experience, what I needed were have the same entities
>> but
>> > > in
>> > > > different databases (even in different Engines i.e Oracle, MsSQl,
>> etc),
>> > > so
>> > > > we can support almost transparently several client implementations
>> in
>> > > > Database but with the same design.
>> >
>> > > > I have to custom the code of Burrow in the following files:
>> >
>> > > > BurrowFramework.cs:
>> > > >         /// <summary>
>> > > >         /// Numero método incluido para Framework
>> > > >         /// </summary>
>> > > >         /// <param name="configurationId"></param>
>> > > >         /// <returns></returns>
>> > > >         public ISessionFactory GetSessionFactoryByName(string
>> > > > configurationId)
>> > > >         {
>> > > >             if (PersistenceUnitRepo.Instance == null)
>> >
>> > > >  PersistenceUnitRepo.Initialize(BurrowEnvironment.Configuration);
>> > > >             return
>> > > >
>> PersistenceUnitRepo.Instance.GetPUByName(configurationId).SessionFactory;
>> > > >         }
>> > > >         /// <summary>
>> > > >         /// Oscar Orduz.
>> > > >         /// </summary>
>> > > >         /// <param name="configurationId"></param>
>> > > >         /// <returns></returns>
>> > > >         public ISession GetSessionByName(string configurationId)
>> > > >         {
>> > > >             AbstractConversation c =
>> > > > ((AbstractConversation)CurrentConversation);
>> > > >             return c.GetSessionByName(configurationId);
>> > > >         }
>> >
>> > > > AbstractConversation.cs
>> >
>> > > >        /// <summary>
>> > > >         /// Oscar Orduz
>> > > >         /// </summary>
>> > > >         /// <param name="configurationId"></param>
>> > > >         /// <returns></returns>
>> > > >         public ISession GetSessionByName(string configurationId)
>> > > >         {
>> > > >             SessionManager sm =
>> string.IsNullOrEmpty(configurationId) ?
>> > > > GetSessionManager() : GetSessionManagerByName(configurationId);
>> > > >             return GetSession(sm);
>> > > >         }
>> > > >         /// <summary>
>> > > >         /// Método creado para el manejo de la sesión para el
>> framework
>> > > de
>> > > > PS
>> > > >         /// </summary>
>> > > >         /// <param name="configurationId"></param>
>> > > >         /// <returns></returns>
>> > > >         internal SessionManager GetSessionManagerByName(string
>> > > > configurationId)
>> > > >         {
>> > > >             return
>> > > >
>> sessManagers[PersistenceUnitRepo.Instance.GetPUByName(configurationId)];
>> > > >         }
>> >
>> > > > PersistenceUnitRepo.cs
>> > > >         /// <summary>
>> > > >         /// Método creado para la recuperación por nombre
>> > > >         /// </summary>
>> > > >         /// <param name="configurationId"></param>
>> > > >         /// <returns></returns>
>> > > >         public PersistenceUnit GetPUByName(string configurationId)
>> > > >         {
>> > > >             if (PersistenceUnits.Count == 1)
>> > > >             {
>> > > >                 return PersistenceUnits[0];
>> > > >             }
>> > > >             foreach (PersistenceUnit pu in persistenceUnits)
>> > > >             {
>> > > >                 if (pu.Name == configurationId)
>> > > >                 {
>> > > >                     return pu;
>> > > >                 }
>> > > >             }
>> >
>> > > >             throw new GeneralException("Persistence Unit cannot be
>> found
>> > > for
>> > > > " + configurationId);
>> > > >         }
>> >
>> > > > I have mantained this code for three releases of burrow and until
>> now it
>> > > > works fine
>> >
>> > > > Hope this help.
>> >
>> > > > Oscar
>> >
>> > > > 2008/12/18 Manu <[email protected]>
>> >
>> > > > > I have been looking at the Burrow source code and I'm not sure if
>> I
>> > > > > can use its GenericDAO to handle multiple databases the way I
>> want.
>> >
>> > > > > I have see that the Session property of the GenericDAO class calls
>> > > > > BurrowFramework().GetSession(_NHEntityType) and that works good if
>> the
>> > > > > multiples databases you're working with have different entities.
>> > > > > However, it can't handle multiple databases with the same mapped
>> > > > > entities as the GetSession method always returns the first
>> > > > > PersistenceUnit. So I think GenericDAO needs an overload to
>> specify a
>> > > > > session factory name to retrieve the proper PersistenceUnit by
>> name
>> > > > > instead of by type.
>> >
>> > > > > As I have started today to look at Burrow I may be wrong, so if
>> anyone
>> > > > > is familiar with it I'd appreciate if he can show some light about
>> > > > > that problem.- Ocultar texto de la cita -
>> >
>> > > > - Mostrar texto de la cita -- Masquer le texte des messages
>> précédents -
>> >
>> > - Afficher le texte des messages précédents -
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to