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

Steve Ebersole steve at hibernate.org
Thu Mar 9 07:58:16 EST 2017


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#initialize
> and Hibernate#isPropertyInitialized will return in each instance:
>
> 1) the attribute is not loaded at all;
>     Hibernate.isPropertyInitialized( enhancedEntity, "extraLazyCollection"
> )
> returns false;
>     Hibernate.initialize( enhancedEntity.getExtraLazyCollection() ) returns
> false; a side-affect
>     is that the attribute will be set to an uninitialized
> PersistentCollection.
> 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.initialize( enhancedEntity.getExtraLazyCollection() ) returns
> false.
> 3) the attribute is loaded and the elements are loaded.
>   Hibernate.isPropertyInitialized( enhancedEntity, "extraLazyCollection" )
> returns true.
>   Hibernate.initialize( 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