[hibernate-dev] Hibernate#isPropertyInitialized vs Hibernate#isInitialized

Gail Badner gbadner at redhat.com
Thu Mar 9 12:55:07 EST 2017


Oops, sorry for the confusion. They should have referred to
Hibernate#isInitialized.

I'll fix and clarify below...

On Thu, Mar 9, 2017 at 4:58 AM, Steve Ebersole <steve at hibernate.org> wrote:

> Your subject says `Hibernate#isInitialized` but then your examples refer
> to `Hibernate#initialize`.  Which are your referring to?  Because in some
> cases you genuinely seem to be referring to `#initialize`, but then you
> keep referring to its return value - `#initialize` has no return.
>
>
> On Thu, Mar 9, 2017 at 12:27 AM Gail Badner <gbadner at redhat.com> wrote:
>
>> I think there can be an inconsistency between
>> Hibernate#isPropertyInitialized vs Hibernate#isInitialized when it comes
>> to
>> an extra-lazy collection of an enhanced entity.
>>
>> IIUC, after fixing HHH-11161 [1], if an extra-lazy collection is accessed
>> on an enhanced entity, the collection property is set to an uninitialized
>> PersistentCollection and calling Hibernate#isPropertyInitialized(
>> collectionfieldName ) will return true, even though the collection itself
>> is uninitialized.
>>
>> I would have expected that false would be returned.
>>
>> I've added a comment to the issue and asked Luis about it. Luis has
>> pointed
>> out the 3 stages of an extra-lazy collection on an enhanced entity. I've
>> listed them below and added my understanding of what
>> Hibernate#isInitialized
>> and Hibernate#isPropertyInitialized will return in each instance:
>>
>> 1) the attribute is not loaded at all;
>>     Hibernate.isPropertyInitialized( enhancedEntity,
>> "extraLazyCollection" )
>> returns false;
>>     (I am skipping an example of calling Hibernate.isInitialized(
>> enhancedEntity.getExtraLazyCollection() )
>>
>            here because by calling enhancedEntity.getExtraLazyCollection(),
the property becomes initalized
           with an uninitialized PersistentCollection, so it will be in the
state described as 2).


> 2) the attribute is loaded, but the elements are not loaded;
>>     Hibernate.isPropertyInitialized( enhancedEntity,
>> "extraLazyCollection" )
>> returns true,
>>     because the property is initialized to a PersistentCollection (even
>> though the PersistentCollection itself is uninitialized).
>>   Hibernate.isInitialized( enhancedEntity.getExtraLazyCollection() )
>> returns
>> false.
>>
>

> 3) the attribute is loaded and the elements are loaded.
>>   Hibernate.isPropertyInitialized( enhancedEntity, "extraLazyCollection"
>> )
>> returns true.
>>   Hibernate.isInitialized( enhancedEntity.getExtraLazyCollection() )
>> returns
>> true.
>>
>> Opinions about the inconsistency in 2)? Is this a bug in the code or in
>> the
>> Javadoc?
>>
>> Thanks,
>> Gail
>>
>> [1] https://hibernate.atlassian.net/browse/HHH-11161
>> _______________________________________________
>> hibernate-dev mailing list
>> hibernate-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>
>


More information about the hibernate-dev mailing list