HHH-13444 Remove ignored EntityMode field from CollectionKey

This commit is contained in:
Sanne Grinovero 2019-06-19 21:46:42 +01:00
parent 7f326b163b
commit ae1016a1c4
3 changed files with 10 additions and 16 deletions

View File

@ -93,8 +93,7 @@ public class CollectionLoadContext {
* @return The loading collection (see discussion above). * @return The loading collection (see discussion above).
*/ */
public PersistentCollection getLoadingCollection(final CollectionPersister persister, final Serializable key) { public PersistentCollection getLoadingCollection(final CollectionPersister persister, final Serializable key) {
final EntityMode em = persister.getOwnerEntityPersister().getEntityMetamodel().getEntityMode(); final CollectionKey collectionKey = new CollectionKey( persister, key );
final CollectionKey collectionKey = new CollectionKey( persister, key, em );
if ( LOG.isTraceEnabled() ) { if ( LOG.isTraceEnabled() ) {
LOG.tracev( "Starting attempt to find loading collection [{0}]", LOG.tracev( "Starting attempt to find loading collection [{0}]",
MessageHelper.collectionInfoString( persister.getRole(), key ) ); MessageHelper.collectionInfoString( persister.getRole(), key ) );
@ -179,8 +178,7 @@ public class CollectionLoadContext {
session.getPersistenceContext().addUnownedCollection( session.getPersistenceContext().addUnownedCollection(
new CollectionKey( new CollectionKey(
persister, persister,
lce.getKey(), lce.getKey()
persister.getOwnerEntityPersister().getEntityMetamodel().getEntityMode()
), ),
lce.getCollection() lce.getCollection()
); );

View File

@ -27,32 +27,33 @@ public final class CollectionKey implements Serializable {
private final Type keyType; private final Type keyType;
private final SessionFactoryImplementor factory; private final SessionFactoryImplementor factory;
private final int hashCode; private final int hashCode;
private EntityMode entityMode;
public CollectionKey(CollectionPersister persister, Serializable key) { public CollectionKey(CollectionPersister persister, Serializable key) {
this( this(
persister.getRole(), persister.getRole(),
key, key,
persister.getKeyType(), persister.getKeyType(),
persister.getOwnerEntityPersister().getEntityMetamodel().getEntityMode(),
persister.getFactory() persister.getFactory()
); );
} }
/**
* The EntityMode parameter is now ignored. Use the other constructor.
* @deprecated Use {@link #CollectionKey(CollectionPersister, Serializable)}
*/
@Deprecated
public CollectionKey(CollectionPersister persister, Serializable key, EntityMode em) { public CollectionKey(CollectionPersister persister, Serializable key, EntityMode em) {
this( persister.getRole(), key, persister.getKeyType(), em, persister.getFactory() ); this( persister.getRole(), key, persister.getKeyType(), persister.getFactory() );
} }
private CollectionKey( private CollectionKey(
String role, String role,
Serializable key, Serializable key,
Type keyType, Type keyType,
EntityMode entityMode,
SessionFactoryImplementor factory) { SessionFactoryImplementor factory) {
this.role = role; this.role = role;
this.key = key; this.key = key;
this.keyType = keyType; this.keyType = keyType;
this.entityMode = entityMode;
this.factory = factory; this.factory = factory;
//cache the hash-code //cache the hash-code
this.hashCode = generateHashCode(); this.hashCode = generateHashCode();
@ -65,7 +66,6 @@ public final class CollectionKey implements Serializable {
return result; return result;
} }
public String getRole() { public String getRole() {
return role; return role;
} }
@ -112,7 +112,6 @@ public final class CollectionKey implements Serializable {
oos.writeObject( role ); oos.writeObject( role );
oos.writeObject( key ); oos.writeObject( key );
oos.writeObject( keyType ); oos.writeObject( keyType );
oos.writeObject( entityMode.toString() );
} }
/** /**
@ -134,7 +133,6 @@ public final class CollectionKey implements Serializable {
(String) ois.readObject(), (String) ois.readObject(),
(Serializable) ois.readObject(), (Serializable) ois.readObject(),
(Type) ois.readObject(), (Type) ois.readObject(),
EntityMode.parse( (String) ois.readObject() ),
(session == null ? null : session.getFactory()) (session == null ? null : session.getFactory())
); );
} }

View File

@ -20,7 +20,6 @@ import java.util.Set;
import java.util.SortedMap; import java.util.SortedMap;
import java.util.TreeMap; import java.util.TreeMap;
import org.hibernate.EntityMode;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import org.hibernate.HibernateException; import org.hibernate.HibernateException;
import org.hibernate.MappingException; import org.hibernate.MappingException;
@ -771,14 +770,13 @@ public abstract class CollectionType extends AbstractType implements Association
final CollectionPersister persister = getPersister( session ); final CollectionPersister persister = getPersister( session );
final PersistenceContext persistenceContext = session.getPersistenceContext(); final PersistenceContext persistenceContext = session.getPersistenceContext();
final EntityMode entityMode = persister.getOwnerEntityPersister().getEntityMode();
// check if collection is currently being loaded // check if collection is currently being loaded
PersistentCollection collection = persistenceContext.getLoadContexts().locateLoadingCollection( persister, key ); PersistentCollection collection = persistenceContext.getLoadContexts().locateLoadingCollection( persister, key );
if ( collection == null ) { if ( collection == null ) {
final CollectionKey collectionKey = new CollectionKey( persister, key, entityMode ); final CollectionKey collectionKey = new CollectionKey( persister, key );
// check if it is already completely loaded, but unowned // check if it is already completely loaded, but unowned
collection = persistenceContext.useUnownedCollection( collectionKey ); collection = persistenceContext.useUnownedCollection( collectionKey );
@ -804,7 +802,7 @@ public abstract class CollectionType extends AbstractType implements Association
} }
if ( hasHolder() ) { if ( hasHolder() ) {
session.getPersistenceContext().addCollectionHolder( collection ); persistenceContext.addCollectionHolder( collection );
} }
if ( LOG.isTraceEnabled() ) { if ( LOG.isTraceEnabled() ) {