| The method DefaultMergeEventListener.unproxyManagedForDetachedMerging contains a bug in case the parameter managed is a HibernateProxy. It results in a StaleObjectStateException because DefaultMergeEventListener.isVersionChanged() always return true. The code in DefaultMergeEventListener.unproxyManagedForDetachedMerging if ( incoming instanceof HibernateProxy ) { return source.getPersistenceContextInternal().unproxy( managed ); } should be replaced by if ( managed instanceof HibernateProxy ) { return source.getPersistenceContextInternal().unproxy( managed ); } to make it working again. |