allow query and finder methods to return Optional
required by Jakarta Data spec
This commit is contained in:
parent
7e9b55ff92
commit
18bbbbb865
|
@ -331,7 +331,7 @@ public abstract class AbstractQueryMethod implements MetaAttribute {
|
||||||
return returnTypeName;
|
return returnTypeName;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void unwrapQuery(StringBuilder declaration, boolean unwrapped) {
|
void unwrapQuery(StringBuilder declaration, boolean unwrapped) {
|
||||||
if ( !unwrapped ) {
|
if ( !unwrapped ) {
|
||||||
declaration
|
declaration
|
||||||
.append("\n\t\t\t.unwrap(")
|
.append("\n\t\t\t.unwrap(")
|
||||||
|
|
|
@ -630,6 +630,7 @@ public class AnnotationMetaEntity extends AnnotationMeta {
|
||||||
|
|
||||||
private static boolean isLegalGenericResultType(String containerTypeName) {
|
private static boolean isLegalGenericResultType(String containerTypeName) {
|
||||||
return containerTypeName.equals(Constants.LIST)
|
return containerTypeName.equals(Constants.LIST)
|
||||||
|
|| containerTypeName.equals(Constants.OPTIONAL)
|
||||||
|| containerTypeName.equals(Constants.TYPED_QUERY)
|
|| containerTypeName.equals(Constants.TYPED_QUERY)
|
||||||
|| containerTypeName.equals(Constants.HIB_QUERY)
|
|| containerTypeName.equals(Constants.HIB_QUERY)
|
||||||
|| containerTypeName.equals(Constants.HIB_SELECTION_QUERY);
|
|| containerTypeName.equals(Constants.HIB_SELECTION_QUERY);
|
||||||
|
|
|
@ -128,6 +128,11 @@ public class CriteriaFinderMethod extends AbstractFinderMethod {
|
||||||
declaration
|
declaration
|
||||||
.append(".getSingleResult()");
|
.append(".getSingleResult()");
|
||||||
}
|
}
|
||||||
|
else if ( containerType.equals(Constants.OPTIONAL) ) {
|
||||||
|
unwrapQuery( declaration, unwrap );
|
||||||
|
declaration
|
||||||
|
.append("\n\t\t\t.uniqueResultOptional()");
|
||||||
|
}
|
||||||
else if ( containerType.equals(Constants.LIST) ) {
|
else if ( containerType.equals(Constants.LIST) ) {
|
||||||
if ( unwrap || hasOrderParameter || hasEnabledFetchProfiles ) {
|
if ( unwrap || hasOrderParameter || hasEnabledFetchProfiles ) {
|
||||||
declaration.append("\n\t\t\t");
|
declaration.append("\n\t\t\t");
|
||||||
|
|
|
@ -152,6 +152,11 @@ public class QueryMethod extends AbstractQueryMethod {
|
||||||
declaration
|
declaration
|
||||||
.append("\n\t\t\t.getSingleResult()");
|
.append("\n\t\t\t.getSingleResult()");
|
||||||
}
|
}
|
||||||
|
else if ( containerTypeName.equals(Constants.OPTIONAL) ) {
|
||||||
|
unwrapQuery( declaration, unwrapped );
|
||||||
|
declaration
|
||||||
|
.append("\n\t\t\t.uniqueResultOptional()");
|
||||||
|
}
|
||||||
else if ( containerTypeName.equals(Constants.LIST) ) {
|
else if ( containerTypeName.equals(Constants.LIST) ) {
|
||||||
declaration
|
declaration
|
||||||
.append("\n\t\t\t.getResultList()");
|
.append("\n\t\t\t.getResultList()");
|
||||||
|
|
|
@ -100,6 +100,7 @@ public final class Constants {
|
||||||
public static final String LIST = java.util.List.class.getName();
|
public static final String LIST = java.util.List.class.getName();
|
||||||
public static final String MAP = java.util.Map.class.getName();
|
public static final String MAP = java.util.Map.class.getName();
|
||||||
public static final String SET = java.util.Set.class.getName();
|
public static final String SET = java.util.Set.class.getName();
|
||||||
|
public static final String OPTIONAL = java.util.Optional.class.getName();
|
||||||
|
|
||||||
public static final Map<String, String> COLLECTIONS = Map.of(
|
public static final Map<String, String> COLLECTIONS = Map.of(
|
||||||
COLLECTION, Constants.COLLECTION_ATTRIBUTE,
|
COLLECTION, Constants.COLLECTION_ATTRIBUTE,
|
||||||
|
|
Loading…
Reference in New Issue