HHH-17860 report bad return type for @Delete

This commit is contained in:
Gavin King 2024-03-22 18:28:26 +01:00 committed by Christian Beikov
parent c552c24c88
commit bac64565cd

View File

@ -1082,7 +1082,23 @@ private void addQueryMethod(
addFinderMethod( method, returnType, containerType );
}
else if ( hasAnnotation( method, JD_DELETE ) ) {
createCriteriaDelete( method, returnType );
addDeleteMethod( method, returnType );
}
}
private void addDeleteMethod(ExecutableElement method, @Nullable TypeMirror returnType) {
if ( returnType != null ) {
final TypeKind kind = returnType.getKind();
if ( kind != TypeKind.VOID
&& kind != TypeKind.INT
&& kind != TypeKind.LONG ) {
context.message(method,
"must be 'void' or return 'int' or 'long'",
Diagnostic.Kind.ERROR);
}
else {
createCriteriaDelete(method, returnType);
}
}
}
@ -1351,8 +1367,7 @@ else if ( !types.isSameType( typeArgument, entity.asType() ) ) {
);
}
private void createCriteriaDelete(
ExecutableElement method, @Nullable TypeMirror returnType) {
private void createCriteriaDelete(ExecutableElement method, TypeMirror returnType) {
final TypeElement entity = primaryEntity;
if ( entity == null) {
context.message( method, "repository does not have a well-defined primary entity type",
@ -1379,7 +1394,7 @@ private void createCriteriaDelete(
this,
methodName,
entity.getQualifiedName().toString(),
returnType==null ? "void" : returnType.toString(),
returnType.toString(),
paramNames,
paramTypes,
parameterNullability(method, entity),