I am in the process of migrating an application from Hibernate 4.3 to Hibernate 6.2. I have noticed something that works differently, causing a NullPointerException when there are two levels of one-to-many nesting with the bottom entity containing a composite id. That is when the composite id contains a relation that is being persisted together with the entity it refers to. Here is our example (simplified). Imagine having a Top entity that has a one-to-many relation to a Middle entity that has a one-to-many relation to a Bottom entity with a composite key (including id of the middle entity): Top entity:
Middle entity:
Bottom entity:
Now, imagine that we want to update the top entity by adding a middle entity with a bottom entity to it. Like this:
However, this fails with the following exception:
Everything works fine when
- the top entity is being created (with the middle and bottom entities) instead (calling persist instead of merge)
- when the middle entities are persisted before (or instead of) merging the top entity
- when the bottom entity has a generated id instead of a reference to the middle entity
See the attached files for the whole test. |