Uninitialized HibernateProxy mapped as NO_PROXY gets initialized when reloaded with enhancement-as-proxy enabled

Description

This bug affects the following combination:

  • enhancement-as-proxy is enabled;

  • a lazy to-one association is mapped with @LazyToOne(LazyToOneOption.NO_PROXY);

  • the association is with an entity of a Class that has subclasses;

  • the association is loaded as a HibernateProxy via EntityType#resolveIdentifier;

  • the same proxy is later re-loaded for another association or by Session#load or Session#getReference.

In EntityType#resolveIdentifier, when the HibernateProxy is returned by Session#internalLoad, it sets HibernateProxy#setUnwrap( true ) in this code.

Later, when the same HibernateProxy is retrieved from StatefulPersistenceContext by DefaultLoadEventListener#proxyOrLoad, it gets initialized by this code.

Environment

None

Activity

Show:
Steve Ebersole
September 30, 2019, 10:48 PM

I think I was saying that some of the tests looked wrong because of the NO_PROXY value, specifically the ones to an entity with subclasses which are treated using traditional JDK proxies. IIRC we decided to allow specifying NO_PROXY on these associations even though technically it is just ignored. Longer term, iirc, we had discussed removing the need for NO_PROXY at all.

 

Anyway, pushed a fix to PR for you and to look at

 

Gail Badner
October 1, 2019, 10:36 PM

Fixed in master.

Gail Badner
October 1, 2019, 11:59 PM

Reopened because there is another case that is not working.

Gail Badner
October 15, 2019, 5:48 PM

All known issues are resolved now.

Gail Badner
November 7, 2019, 6:02 AM

Fixed in 5.3 branch as well.

Assignee

Steve Ebersole

Reporter

Gail Badner

Fix versions

Labels

None

backPortable

Backport?

Suitable for new contributors

None

Requires Release Note

None

Pull Request

None

backportDecision

None

Components

Affects versions

Priority

Major
Configure