@@ -776,72 +776,63 @@ private static Member resolveMappedSuperclassMember(
776776			Property  property ,
777777			MappedSuperclassDomainType <?> ownerType ,
778778			MetadataContext  metadataContext ) {
779- 		final  EntityPersister  declaringEntity  = getDeclaringEntity ( (AbstractIdentifiableType <?>) ownerType , metadataContext  );
780- 		if  ( declaringEntity  != null  ) {
781- 			return  resolveEntityMember ( property , declaringEntity  );
782- 		}
783- 		else  {
784- 			final  ManagedDomainType <?> subType  = ownerType .getSubTypes ().iterator ().next ();
785- 			final  Type .PersistenceType  persistenceType  = subType .getPersistenceType ();
786- 			if  ( persistenceType  == Type .PersistenceType .ENTITY  ) {
787- 				return  resolveEntityMember ( property , getDeclaringEntity ( (AbstractIdentifiableType <?>) subType , metadataContext  ) );
788- 			}
789- 			else  if  ( persistenceType  == Type .PersistenceType .EMBEDDABLE  ) {
790- 				return  resolveEmbeddedMember ( property , (EmbeddableDomainType <?>) subType , metadataContext  );
791- 			}
792- 			else  if  ( persistenceType  == Type .PersistenceType .MAPPED_SUPERCLASS  ) {
793- 				return  resolveMappedSuperclassMember (
794- 						property ,
795- 						(MappedSuperclassDomainType <?>) subType ,
796- 						metadataContext 
797- 				);
798- 			}
799- 			else  {
800- 				throw  new  IllegalArgumentException ( "Unexpected sub-type: "  + persistenceType  );
801- 			}
802- 		}
779+ 		return  property .getGetter ( ownerType .getJavaType () ).getMember ();
803780	}
804781
805782	private  final  MemberResolver  identifierMemberResolver  = (attributeContext , metadataContext ) -> {
806783		final  AbstractIdentifiableType <?> identifiableType  =
807784				(AbstractIdentifiableType <?>) attributeContext .getOwnerType ();
808- 		final  EntityPersister  declaringEntityMapping  = getDeclaringEntity ( identifiableType , metadataContext  );
809- 		final  EntityIdentifierMapping  identifierMapping  = declaringEntityMapping .getIdentifierMapping ();
810- 		final  Property  propertyMapping  = attributeContext .getPropertyMapping ();
811- 		if  ( !propertyMapping .getName ().equals ( identifierMapping .getAttributeName () ) ) {
812- 			// this *should* indicate processing part of an IdClass... 
813- 			return  virtualIdentifierMemberResolver .resolveMember ( attributeContext , metadataContext  );
814- 		}
815- 
816- 		final  Getter  getter  = getter ( declaringEntityMapping , propertyMapping  );
817- 		if  ( getter  instanceof  PropertyAccessMapImpl .GetterImpl  ) {
818- 			return  new  MapMember ( identifierMapping .getAttributeName (), identifierMapping .getJavaType ().getJavaTypeClass () );
785+ 		if  ( identifiableType  instanceof  MappedSuperclassDomainType <?> ) {
786+ 			return  attributeContext .getPropertyMapping ()
787+ 					.getGetter ( identifiableType .getJavaType () )
788+ 					.getMember ();
819789		}
820790		else  {
821- 			return  getter .getMember ();
791+ 			final  EntityPersister  declaringEntityMapping  = getDeclaringEntity ( identifiableType , metadataContext  );
792+ 			final  EntityIdentifierMapping  identifierMapping  = declaringEntityMapping .getIdentifierMapping ();
793+ 			final  Property  propertyMapping  = attributeContext .getPropertyMapping ();
794+ 			if  ( !propertyMapping .getName ().equals ( identifierMapping .getAttributeName () ) ) {
795+ 				// this *should* indicate processing part of an IdClass... 
796+ 				return  virtualIdentifierMemberResolver .resolveMember ( attributeContext , metadataContext  );
797+ 			}
798+ 
799+ 			final  Getter  getter  = getter ( declaringEntityMapping , propertyMapping  );
800+ 			if  ( getter  instanceof  PropertyAccessMapImpl .GetterImpl  ) {
801+ 				return  new  MapMember ( identifierMapping .getAttributeName (), identifierMapping .getJavaType ().getJavaTypeClass () );
802+ 			}
803+ 			else  {
804+ 				return  getter .getMember ();
805+ 			}
822806		}
823807	};
824808
825809	private  final  MemberResolver  versionMemberResolver  = (attributeContext , metadataContext ) -> {
826810		final  AbstractIdentifiableType <?> identifiableType  =
827811				(AbstractIdentifiableType <?>) attributeContext .getOwnerType ();
828- 		final  EntityPersister  entityPersister  = getDeclaringEntity ( identifiableType , metadataContext  );
829- 		final  EntityVersionMapping  versionMapping  = entityPersister .getVersionMapping ();
830- 		assert  entityPersister .isVersioned ();
831- 		assert  versionMapping  != null ;
832- 
833- 		final  String  versionPropertyName  = attributeContext .getPropertyMapping ().getName ();
834- 		if  ( !versionPropertyName .equals ( versionMapping .getVersionAttribute ().getAttributeName () ) ) {
835- 			// this should never happen, but to be safe... 
836- 			throw  new  IllegalArgumentException ( "Given property did not match declared version property"  );
837- 		}
838- 
839- 		final  Getter  getter  = getter ( entityPersister , attributeContext .getPropertyMapping () );
840- 		if  ( getter  instanceof  PropertyAccessMapImpl .GetterImpl  ) {
841- 			return  new  MapMember ( versionPropertyName , versionMapping .getJavaType ().getJavaTypeClass () );
812+ 		if  ( identifiableType  instanceof  MappedSuperclassDomainType <?> ) {
813+ 			return  attributeContext .getPropertyMapping ()
814+ 					.getGetter ( identifiableType .getJavaType () )
815+ 					.getMember ();
842816		}
843817		else  {
844- 			return  getter .getMember ();
818+ 			final  EntityPersister  entityPersister  = getDeclaringEntity ( identifiableType , metadataContext  );
819+ 			final  EntityVersionMapping  versionMapping  = entityPersister .getVersionMapping ();
820+ 			assert  entityPersister .isVersioned ();
821+ 			assert  versionMapping  != null ;
822+ 
823+ 			final  String  versionPropertyName  = attributeContext .getPropertyMapping ().getName ();
824+ 			if  ( !versionPropertyName .equals ( versionMapping .getVersionAttribute ().getAttributeName () ) ) {
825+ 				// this should never happen, but to be safe... 
826+ 				throw  new  IllegalArgumentException ( "Given property did not match declared version property"  );
827+ 			}
828+ 
829+ 			final  Getter  getter  = getter ( entityPersister , attributeContext .getPropertyMapping () );
830+ 			if  ( getter  instanceof  PropertyAccessMapImpl .GetterImpl  ) {
831+ 				return  new  MapMember ( versionPropertyName , versionMapping .getJavaType ().getJavaTypeClass () );
832+ 			}
833+ 			else  {
834+ 				return  getter .getMember ();
835+ 			}
845836		}
846837	};
847838
0 commit comments