Join table of lazy loading many-to-many relation not saved when lazy initialization bytecode enhancement is active

Description

Adding items to a lazy loading many-to-many Set (and saving the entity) doesn't trigger the appropriate INSERT SQL query, so the new relations are not saved, when the parent entity has an @ElementCollection field too.

A self-contained demo is available in

, it's runnable with mvn clean test.

I've experienced this issue both with Hibernate ORM 5.1.0 and 5.2.0; but 5.0.9 seems to be working fine.

I've found that any of the following changes make it work again (see the demo app):

  • Uncomment the parent.getNames(); command at Main.java:75.

  • Remove the names field, and the getNames() and setNames(Set<String>) methods of the Parent entity.

  • Change the fetch attribute of the @ManyToMany annotation to FetchType.EAGER.

  • Set enableLazyInitialization to false in pom.xml.

  • Change Hibernate's version to 5.0.9 in pom.xml (there are two instances).

Performing any of these changes makes the insert into parents_children (parent, child) values (?, ?) SQL command appear in the standard output.

Environment

None

Status

Assignee

Luis Barreiro

Reporter

Gábor Varga

Fix versions

Labels

backPortable

None

Suitable for new contributors

None

Requires Release Note

None

Pull Request

None

backportDecision

None

Components

Affects versions

5.2.0
5.1.0

Priority

Critical