Starting in 4.2.7, the following association mapping results in an error on flushing (regardless of whether there was a change to the collection). <class name="User" table="`User`"> <id name="name" length="32" /> <map name="groups" table="UserGroup" cascade="all,delete-orphan" > <key column="name" /> <map-key column="groupType" type="integer" /> <many-to-many class="Group" unique="true" > <column name="groupName"/> </many-to-many> </map> </class> Stacktrace: org.hibernate.HibernateException: Unable to resolve property: null at org.hibernate.tuple.entity.EntityMetamodel.getPropertyIndex(EntityMetamodel.java:1215) at org.hibernate.persister.entity.AbstractEntityPersister.getPropertyIndex(AbstractEntityPersister.java:2406) at org.hibernate.engine.spi.EntityEntry.getLoadedValue(EntityEntry.java:289) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:188) at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:381) at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:321) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:298) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:161) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:118) at org.hibernate.event.internal.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:167) at org.hibernate.event.internal.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:158) at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:91) at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:55) at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1218) at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:421) at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101) at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177) at org.hibernate.test.manytomany.mapunique.ManyToManyUniqueDelOrphanTest.testManyToManyWithCascadeDeleteOrphan(ManyToManyUniqueDelOrphanTest.java:62) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.hibernate.testing.junit4.ExtendedFrameworkMethod.invokeExplosively(ExtendedFrameworkMethod.java:62) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74) I've attached a test case (org.hibernate.test.manytomany.mapunique.ManyToManyUniqueDelOrphanTest). The test case succeeds under 4.2.6, but fails under 4.2.7 (and master). I believe this regression was caused by the fix for HHH-6484.
Verified in 6.2.4.CR1.
Sorry I missed this. This issue is particular to "indexed" collections, i.e., maps and lists. I made a small correction. Feel free to improve.