@@ -1791,33 +1791,33 @@ private void createCriteriaFinder(
17911791		);
17921792	}
17931793
1794- 	private  void  checkFinderParameter (@ Nullable  TypeElement  entity , VariableElement  parameter ) {
1794+ 	private  void  checkFinderParameter (@ Nullable  TypeElement  entityType , VariableElement  parameter ) {
17951795		final  Types  types  = context .getTypeUtils ();
17961796		final  TypeMirror  parameterType  = parameterType (parameter );
17971797		final  String  typeName  = parameterType .toString ();
1798- 		if  (  isRestrictionParam (  typeName  ) ) { 
1799- 			 final   TypeMirror   typeArgument  =  getTypeArgument (  parameterType  ); 
1800- 			 final   TypeElement   implicitEntityType  =  entity  ==  null  ?  primaryEntity  :  entity ; 
1801- 			 if  ( implicitEntityType  !=  null  ) {
1802- 				 if  (  typeArgument  ==  null  ) { 
1803- 					 missingTypeArgError (  implicitEntityType . getSimpleName (). toString (),  parameter ,  typeName  ) ;
1804- 				} 
1805- 				else   if  ( ! types . isSameType (  typeArgument ,  implicitEntityType . asType () )  ) {
1806- 					wrongTypeArgError ( implicitEntityType .getSimpleName ().toString (), parameter , typeName  );
1807- 				}
1808- 			} 
1809- //			else {  
1810- //				message( parameter, "repository method does have well-defined entity type", Diagnostic.Kind.ERROR );  
1798+ 		// TODO: we could allow restrictions even when the query returns a projection, 
1799+ 		//       but this would require some sort of change to Hibernate core, perhaps 
1800+ 		//       adding <T> SelectionQuery<T> setProjection(Class<T> recordType) 
1801+ //		 if ( isRestrictionParam( typeName )  ) {
1802+ // 			final TypeMirror  typeArgument = getTypeArgument( parameterType ); 
1803+ // 			final TypeElement  implicitEntityType = entityType == null ? primaryEntity : entityType ;
1804+ // 			if ( implicitEntityType != null ) { 
1805+ // 				if ( typeArgument == null  ) {
1806+ // 					missingTypeArgError ( implicitEntityType.getSimpleName().toString(), parameter, typeName );
1807+ // 				}
1808+ // 				else if ( !types.isSameType( typeArgument, implicitEntityType.asType() ) ) { 
1809+ //					wrongTypeArgError( implicitEntityType.getSimpleName().toString(), parameter, typeName );  
1810+ //				}  
18111811//			} 
1812- 		}
1813- 		else   if  ( isOrderParam ( typeName  ) ) {
1812+ // 		}
1813+ 		if  ( isOrderParam (  typeName  ) ||  isRestrictionParam ( typeName  ) ) {
18141814			final  TypeMirror  typeArgument  = getTypeArgument ( parameterType  );
1815- 			if  ( entity  != null  ) {
1815+ 			if  ( entityType  != null  ) {
18161816				if  ( typeArgument  == null  ) {
1817- 					missingTypeArgError ( entity . getSimpleName (). toString () , parameter , typeName  );
1817+ 					missingTypeArgError ( entityType , parameter , typeName  );
18181818				}
1819- 				else  if  ( !types .isSameType ( typeArgument , entity .asType () ) ) {
1820- 					wrongTypeArgError ( entity . getSimpleName (). toString () , parameter , typeName  );
1819+ 				else  if  ( !types .isSameType ( typeArgument , entityType .asType () ) ) {
1820+ 					wrongTypeArgError ( entityType , parameter , typeName  );
18211821				}
18221822			}
18231823			else  {
@@ -1869,31 +1869,32 @@ private void createCriteriaDelete(ExecutableElement method) {
18691869		}
18701870	}
18711871
1872- 	private  void  wrongTypeArgError (String   entity , VariableElement  parameter , String  parameterType ) {
1873- 		message (parameter , "mismatched type of "  + message (parameterType , entity ),
1872+ 	private  void  wrongTypeArgError (TypeElement   entityType , VariableElement  parameter , String  parameterType ) {
1873+ 		message (parameter , "mismatched type of "  + message (parameterType , entityType ),
18741874				Diagnostic .Kind .ERROR  );
18751875	}
18761876
1877- 	private  void  missingTypeArgError (String   entity , VariableElement  parameter , String  parameterType ) {
1878- 		message (parameter , "missing type of "  + message (parameterType , entity ),
1877+ 	private  void  missingTypeArgError (TypeElement   entityType , VariableElement  parameter , String  parameterType ) {
1878+ 		message (parameter , "missing type of "  + message (parameterType , entityType ),
18791879				Diagnostic .Kind .ERROR  );
18801880	}
18811881
1882- 	private  String  message (String  parameterType , String  entity ) {
1882+ 	private  String  message (String  parameterType , TypeElement  entityType ) {
1883+ 		final  String  entityTypeName  = entityType .getSimpleName ().toString ();
18831884		if  (parameterType .startsWith (HIB_ORDER ) || parameterType .startsWith (JD_ORDER )) {
1884- 			return  "order (should be 'Order<? super "  + entity  + ">')" ;
1885+ 			return  "order (should be 'Order<? super "  + entityTypeName  + ">')" ;
18851886		}
18861887		else  if  (parameterType .startsWith (LIST  + "<"  + HIB_ORDER )) {
1887- 			return  "order (should be 'List<Order<? super "  + entity  + ">>')" ;
1888+ 			return  "order (should be 'List<Order<? super "  + entityTypeName  + ">>')" ;
18881889		}
18891890		else  if  (parameterType .startsWith (HIB_RESTRICTION )) {
1890- 			return  "restriction (should be 'Restriction<? super "  + entity  + ">')" ;
1891+ 			return  "restriction (should be 'Restriction<? super "  + entityTypeName  + ">')" ;
18911892		}
18921893		else  if  (parameterType .startsWith (LIST  + "<"  + HIB_RESTRICTION )) {
1893- 			return  "restriction (should be 'List<Restriction<? super "  + entity  + ">>')" ;
1894+ 			return  "restriction (should be 'List<Restriction<? super "  + entityTypeName  + ">>')" ;
18941895		}
18951896		else  if  (parameterType .startsWith (JD_SORT )) {
1896- 			return  "sort (should be 'Sort<? super "  + entity  + ">')" ;
1897+ 			return  "sort (should be 'Sort<? super "  + entityTypeName  + ">')" ;
18971898		}
18981899		else  {
18991900			return  "parameter" ;
0 commit comments