jackson-datatype-hibernate icon indicating copy to clipboard operation
jackson-datatype-hibernate copied to clipboard

FORCE_LAZY_LOADING can cause useless session if FetchMode is set to JOIN

Open pip8786 opened this issue 5 years ago • 1 comments

I have an ElementCollection on my object that is defaulting to lazy loading, but in my Criteria I've set the FetchMode to Join, which initializes the collection. While this causes the initialization of the collection to be identical to FetchType.Eager on the collection itself, it's marked at using lazy loading and therefore falls into the code linked here: https://github.com/FasterXML/jackson-datatype-hibernate/blob/7ae60e9d2001639a2fa1e6df44c212bc74482b00/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/PersistentCollectionSerializer.java#L287-L295

I think getting to this point is fine, but shouldn't it be checked that !coll.wasInitialized() on line 290, prior to opening a temporary session that will essentially do nothing since the collection is already initialized?

pip8786 avatar Apr 13 '19 03:04 pip8786

Found another issue here. If I turn off FORCE_LAZY_LOADING for the module, it still opens the session since there is no check for the collection already being initialized before doing so. In other words, the FORCE_LAZY_LOADING feature doesn't actually matter in this case, the collection should be checked for wasInitialized before setting up a session and calling initialize on it.

pip8786 avatar Apr 13 '19 03:04 pip8786