[hibernate-dev] Hibernate.getImplementation(Object)
Max Rydahl Andersen
max.andersen at redhat.com
Thu May 24 10:57:56 EDT 2007
> This is what I want to return one way or an other... or CGLIB should
> fill up the superclass fields.
I don't understand ;)
The parameter to Hibernate.initialize(x) is the *entity* right, not a
*value* of that object ?
And field access etc. works on that object.
ClassMetaData.getPropertyValue(x, "propertyName") would give you the value
(at least after
initialize(x) have been called)
No reason for magical impl detail api afaik.
/max
> On 24 mai 07, at 01:02, Max Rydahl Andersen wrote:
>
>> afaik ( ( HibernateProxy ) value ).getHibernateLazyInitializer
>> ().getImplementation() haven't changed almost since beginning of times.
>>
>> But exposing it on the Hibernate class API would be wrong IMO since the
>> return value would be the underlying object instead of the proxy, or
>> do I misunderstand what you want it to return ?
>>
>> /max
>>
>>> I know that Max :)
>>> I do not expose it to the user, it's just how HSearch internally deal
>>> with it during the transparent indexation process, so I do not break
>>> the == operation from a user point of view. Note that we expose that
>>> to the user anyway through load/initialize/get, I'm just begging for a
>>> facilitator.
>>> Currently my code is fairly weak, since Steve can refactor anytime
>>> LazyInitializer using an AST parser and a maven POM approach,
>>> because... you know ;-)
>>> I'm fine is we consider HibernateProxy and LazyInitializer as public
>>> APIs but it's not the case today, or at least I'm fine if we define an
>>> extended contract between Search and Core so that it won't break
>>> between micro versions.
>>>
>>> On 23 mai 07, at 19:24, Max Rydahl Andersen wrote:
>>>
>>>> why are you ever in need of touching the field values directly ?
>>>>
>>>> Accessing and potentially exposing the underlying object of a proxied
>>>> entity should be strictly prohibted
>>>> since otherwise you easily end up with breaking ==
>>>>
>>>> /max
>>>>
>>>>> For Hibernate Search I came to a problem.
>>>>> When a user choose field access.
>>>>> When I access a previously uninitialized object, and even if I
>>>>> initialize it (Hibernate.initialize()).
>>>>>
>>>>> The field access End up returning null all the time because of the
>>>>> way lazy loading is done. I worked around that using some of the
>>>>> code from Hibernate.initialize()
>>>>>
>>>>> if ( value instanceof HibernateProxy ) {
>>>>> value = ( ( HibernateProxy ) value ).getHibernateLazyInitializer()
>>>>> .getImplementation();
>>>>> }
>>>>>
>>>>> But it seems it really should be part of the Hibernate class
>>>>> contract.
>>>>>
>>>>> I could use
>>>>>
>>>>> Hibernate.initialize(value);
>>>>> value = session.get( Hibernate.getClass(value),
>>>>> session.getIdentifier(value) );
>>>>>
>>>>> but at the present time, it's hard for me to access the session, and
>>>>> conceptually speaking there is no real need for it.
>>>>>
>>>>> How about exposing this service in Hibernate class either
>>>>>
>>>>> value = Hibernate.initialize(value); //changing the return value
>>>>> or
>>>>> value = Hibernate.getImplementation(value);
>>>>>
>>>>> WDYT?
>>>>> _______________________________________________
>>>>> hibernate-dev mailing list
>>>>> hibernate-dev at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>>>
>>>>
>>>>
>>>> ----
>>>> Max Rydahl Andersen
>>>> callto://max.rydahl.andersen
>>>>
>>>> Hibernate
>>>> max at hibernate.org
>>>> http://hibernate.org
>>>>
>>>> JBoss a division of Red Hat
>>>> max.andersen at jboss.com
>>>
>>
>>
>>
>> ----
>> Max Rydahl Andersen
>> callto://max.rydahl.andersen
>>
>> Hibernate
>> max at hibernate.org
>> http://hibernate.org
>>
>> JBoss a division of Red Hat
>> max.andersen at jboss.com
>
--
--
Max Rydahl Andersen
callto://max.rydahl.andersen
Hibernate
max at hibernate.org
http://hibernate.org
JBoss a division of Red Hat
max.andersen at jboss.com
More information about the hibernate-dev
mailing list