I get the error Don’t change the reference to a collection with delete-orphan enabled for no particular reason.
A bit of input: I have a class Register
which has a ManyToOne
relation
@JoinColumns({ @JoinColumn(name = “MTR_ID”, referencedColumnName = “MTR_ID”, nullable = true), @JoinColumn(name = “EFF_DTTM”, referencedColumnName = “EFF_DTTM”, nullable = true) })
@ManyToOne(optional = true, fetch = FetchType.LAZY)
private MeterConfiguration meterConfiguration;
It is important to note that MTR_ID and EFF_DTTM are not primary keys in the MeterConfiguration
If I load Register from the database and then do flash, I get an error: Don’t change the reference to a collection with delete-orphan enabled
The reason is that in the org.hibernate.engine.internal.Collections#processReachableCollection
method, the CollectionEntry
loadedKey
is MeterConfiguration(*null*)
and
currentKey
is MeterConfiguration(*someId*)
.
MeterConfiguration(*null*)
entity looks like a proxy, initialized with only two fields, which are specified in JoinColumns
And loadedKey
is set in org.hibernate.engine.internal.StatefulPersistenceContext#addUninitializedCollection
when initializing a collection.
I don’t delete or change the reference, the problem is that initially loadedKey and currentKey are already different
This started after upgrading to Hibernate 6. Earlier, in version 5, this code worked.
I still think the error is on my side, but I can’t figure out what I’m doing wrong