diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/ActionConfirmationQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/ActionConfirmationQuery.java index 49bdfaa6e..5dc497115 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/ActionConfirmationQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/ActionConfirmationQuery.java @@ -10,6 +10,7 @@ import eu.eudat.data.LockEntity; import eu.eudat.data.TagEntity; import eu.eudat.model.ActionConfirmation; import eu.eudat.model.Tag; +import eu.eudat.query.utils.QueryUtilsService; import gr.cite.tools.data.query.FieldResolver; import gr.cite.tools.data.query.QueryBase; import gr.cite.tools.data.query.QueryContext; @@ -46,7 +47,9 @@ public class ActionConfirmationQuery extends QueryBase private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); - public ActionConfirmationQuery() { + private final QueryUtilsService queryUtilsService; + public ActionConfirmationQuery(QueryUtilsService queryUtilsService) { + this.queryUtilsService = queryUtilsService; } public ActionConfirmationQuery like(String value) { @@ -186,7 +189,7 @@ public class ActionConfirmationQuery extends QueryBase protected Predicate applyFilters(QueryContext queryContext) { List predicates = new ArrayList<>(); if (this.like != null && !this.like.isEmpty()) { - predicates.add(queryContext.CriteriaBuilder.like(queryContext.Root.get(ActionConfirmationEntity._token), this.like)); + predicates.add(queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(ActionConfirmationEntity._token), this.like)); } if (this.ids != null) { CriteriaBuilder.In inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(ActionConfirmationEntity._id)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionQuery.java index b54d0e627..90a848baf 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionQuery.java @@ -242,8 +242,8 @@ public class DescriptionQuery extends QueryBase { List predicates = new ArrayList<>(); if (this.like != null && !this.like.isEmpty()) { predicates.add(queryContext.CriteriaBuilder.or( - queryContext.CriteriaBuilder.like(queryContext.Root.get(DescriptionEntity._description), this.like), - queryContext.CriteriaBuilder.like(queryContext.Root.get(DescriptionEntity._label), this.like) + queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(DescriptionEntity._description), this.like), + queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(DescriptionEntity._label), this.like) )); } if (this.ids != null) { diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java index 7939c389f..0c8a2236a 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java @@ -274,8 +274,8 @@ public class DescriptionTemplateQuery extends QueryBase inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(DescriptionTemplateTypeEntity._isActive)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DmpBlueprintQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/DmpBlueprintQuery.java index 46b781862..6f6e72fe6 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/DmpBlueprintQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DmpBlueprintQuery.java @@ -7,6 +7,7 @@ import eu.eudat.commons.enums.IsActive; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.DmpBlueprintEntity; import eu.eudat.model.DmpBlueprint; +import eu.eudat.query.utils.QueryUtilsService; import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.tools.data.query.FieldResolver; import gr.cite.tools.data.query.QueryBase; @@ -158,10 +159,11 @@ public class DmpBlueprintQuery extends QueryBase { return this; } + private final QueryUtilsService queryUtilsService; public DmpBlueprintQuery( - UserScope userScope, - AuthorizationService authService + AuthorizationService authService, QueryUtilsService queryUtilsService ) { + this.queryUtilsService = queryUtilsService; } @Override @@ -193,7 +195,7 @@ public class DmpBlueprintQuery extends QueryBase { } if (this.like != null && !this.like.isEmpty()) { - predicates.add(queryContext.CriteriaBuilder.like(queryContext.Root.get(DmpBlueprintEntity._label), this.like)); + predicates.add(queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(DmpBlueprintEntity._label), this.like)); } if (this.isActives != null) { diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DmpQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/DmpQuery.java index 1e8562f7f..7626cbad3 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/DmpQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DmpQuery.java @@ -256,7 +256,7 @@ public class DmpQuery extends QueryBase { protected Predicate applyFilters(QueryContext queryContext) { List predicates = new ArrayList<>(); if (this.like != null && !this.like.isEmpty()) { - predicates.add(queryContext.CriteriaBuilder.like(queryContext.Root.get(DmpEntity._label), this.like)); + predicates.add(queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(DmpEntity._label), this.like)); } if (this.ids != null) { CriteriaBuilder.In inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(DmpEntity._id)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/LanguageQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/LanguageQuery.java index 1fbfbd05c..bfb85a1f0 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/LanguageQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/LanguageQuery.java @@ -4,6 +4,7 @@ import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.commons.enums.IsActive; import eu.eudat.data.LanguageEntity; import eu.eudat.model.Language; +import eu.eudat.query.utils.QueryUtilsService; import gr.cite.tools.data.query.FieldResolver; import gr.cite.tools.data.query.QueryBase; import gr.cite.tools.data.query.QueryContext; @@ -103,8 +104,10 @@ public class LanguageQuery extends QueryBase { return this; } + private final QueryUtilsService queryUtilsService; public LanguageQuery( - ) { + QueryUtilsService queryUtilsService) { + this.queryUtilsService = queryUtilsService; } @Override @@ -127,7 +130,7 @@ public class LanguageQuery extends QueryBase { predicates.add(inClause); } if (this.like != null && !this.like.isEmpty()) { - predicates.add(queryContext.CriteriaBuilder.like(queryContext.Root.get(LanguageEntity._code), this.like)); + predicates.add(queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(LanguageEntity._code), this.like)); } if (this.isActives != null) { CriteriaBuilder.In inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(LanguageEntity._isActive)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/PrefillingSourceQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/PrefillingSourceQuery.java index b985af971..96b1b0cf2 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/PrefillingSourceQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/PrefillingSourceQuery.java @@ -4,6 +4,7 @@ import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.commons.enums.IsActive; import eu.eudat.data.PrefillingSourceEntity; import eu.eudat.model.PrefillingSource; +import eu.eudat.query.utils.QueryUtilsService; import gr.cite.tools.data.query.FieldResolver; import gr.cite.tools.data.query.QueryBase; import gr.cite.tools.data.query.QueryContext; @@ -87,8 +88,10 @@ public class PrefillingSourceQuery extends QueryBase { } + private final QueryUtilsService queryUtilsService; public PrefillingSourceQuery( - ) { + QueryUtilsService queryUtilsService) { + this.queryUtilsService = queryUtilsService; } @Override @@ -111,7 +114,7 @@ public class PrefillingSourceQuery extends QueryBase { predicates.add(inClause); } if (this.like != null && !this.like.isEmpty()) { - predicates.add(queryContext.CriteriaBuilder.like(queryContext.Root.get(PrefillingSourceEntity._label), this.like)); + predicates.add(queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(PrefillingSourceEntity._label), this.like)); } if (this.isActives != null) { CriteriaBuilder.In inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(PrefillingSourceEntity._isActive)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceQuery.java index 87d917248..9b7d0235f 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceQuery.java @@ -236,9 +236,9 @@ public class ReferenceQuery extends QueryBase { predicates.add(inClause); } if (this.like != null && !this.like.isEmpty()) { - predicates.add(queryContext.CriteriaBuilder.or(queryContext.CriteriaBuilder.like(queryContext.Root.get(ReferenceEntity._label), this.like), - queryContext.CriteriaBuilder.like(queryContext.Root.get(ReferenceEntity._description), this.like), - queryContext.CriteriaBuilder.like(queryContext.Root.get(ReferenceEntity._source), this.like) + predicates.add(queryContext.CriteriaBuilder.or(queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(ReferenceEntity._label), this.like), + queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(ReferenceEntity._description), this.like), + queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(ReferenceEntity._source), this.like) )); } if (this.isActives != null) { diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceTypeQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceTypeQuery.java index 932347568..2e8a3cdef 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceTypeQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceTypeQuery.java @@ -6,6 +6,7 @@ import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.ReferenceEntity; import eu.eudat.data.ReferenceTypeEntity; import eu.eudat.model.ReferenceType; +import eu.eudat.query.utils.QueryUtilsService; import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.tools.data.query.FieldResolver; import gr.cite.tools.data.query.QueryBase; @@ -107,8 +108,10 @@ public class ReferenceTypeQuery extends QueryBase { } + private final QueryUtilsService queryUtilsService; public ReferenceTypeQuery( - ) { + QueryUtilsService queryUtilsService) { + this.queryUtilsService = queryUtilsService; } @Override @@ -131,8 +134,8 @@ public class ReferenceTypeQuery extends QueryBase { predicates.add(inClause); } if (this.like != null && !this.like.isEmpty()) { - predicates.add(queryContext.CriteriaBuilder.or(queryContext.CriteriaBuilder.like(queryContext.Root.get(ReferenceTypeEntity._code), this.like), - queryContext.CriteriaBuilder.like(queryContext.Root.get(ReferenceTypeEntity._name), this.like) + predicates.add(queryContext.CriteriaBuilder.or(queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(ReferenceTypeEntity._code), this.like), + queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(ReferenceTypeEntity._name), this.like) )); } if (this.isActives != null) { diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/StorageFileQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/StorageFileQuery.java index f3b8ff108..26947f825 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/StorageFileQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/StorageFileQuery.java @@ -6,6 +6,7 @@ import eu.eudat.commons.enums.StorageType; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.StorageFileEntity; import eu.eudat.model.StorageFile; +import eu.eudat.query.utils.QueryUtilsService; import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.tools.data.query.FieldResolver; import gr.cite.tools.data.query.QueryBase; @@ -34,9 +35,11 @@ public class StorageFileQuery extends QueryBase { private final UserScope userScope; private final AuthorizationService authService; - public StorageFileQuery(UserScope userScope, AuthorizationService authService) { + private final QueryUtilsService queryUtilsService; + public StorageFileQuery(UserScope userScope, AuthorizationService authService, QueryUtilsService queryUtilsService) { this.userScope = userScope; this.authService = authService; + this.queryUtilsService = queryUtilsService; } public StorageFileQuery like(String value) { @@ -146,7 +149,7 @@ public class StorageFileQuery extends QueryBase { protected Predicate applyFilters(QueryContext queryContext) { List predicates = new ArrayList<>(); if (this.like != null && !this.like.isEmpty()) { - predicates.add( queryContext.CriteriaBuilder.like(queryContext.Root.get(StorageFileEntity._name), this.like)); + predicates.add( queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(StorageFileEntity._name), this.like)); } if (this.ids != null) { CriteriaBuilder.In inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(StorageFileEntity._id)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/SupportiveMaterialQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/SupportiveMaterialQuery.java index befc27d63..e07b00639 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/SupportiveMaterialQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/SupportiveMaterialQuery.java @@ -6,6 +6,7 @@ import eu.eudat.commons.enums.SupportiveMaterialFieldType; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.SupportiveMaterialEntity; import eu.eudat.model.SupportiveMaterial; +import eu.eudat.query.utils.QueryUtilsService; import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.tools.data.query.FieldResolver; import gr.cite.tools.data.query.QueryBase; @@ -123,8 +124,10 @@ public class SupportiveMaterialQuery extends QueryBase return this; } + private final QueryUtilsService queryUtilsService; public SupportiveMaterialQuery( - ) { + QueryUtilsService queryUtilsService) { + this.queryUtilsService = queryUtilsService; } @Override @@ -147,8 +150,8 @@ public class SupportiveMaterialQuery extends QueryBase predicates.add(inClause); } if (this.like != null && !this.like.isEmpty()) { - predicates.add(queryContext.CriteriaBuilder.or(queryContext.CriteriaBuilder.like(queryContext.Root.get(SupportiveMaterialEntity._languageCode), this.like), - queryContext.CriteriaBuilder.like(queryContext.Root.get(SupportiveMaterialEntity._payload), this.like) + predicates.add(queryContext.CriteriaBuilder.or(queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(SupportiveMaterialEntity._languageCode), this.like), + queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(SupportiveMaterialEntity._payload), this.like) )); } if (this.isActives != null) { diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/TagQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/TagQuery.java index 573f48cf3..4abb0e87d 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/TagQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/TagQuery.java @@ -204,7 +204,7 @@ public class TagQuery extends QueryBase { protected Predicate applyFilters(QueryContext queryContext) { List predicates = new ArrayList<>(); if (this.like != null && !this.like.isEmpty()) { - predicates.add(queryContext.CriteriaBuilder.like(queryContext.Root.get(TagEntity._label), this.like)); + predicates.add(queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(TagEntity._label), this.like)); } if (this.ids != null) { CriteriaBuilder.In inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(TagEntity._id)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/TenantQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/TenantQuery.java index 86477cd29..f1acf6167 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/TenantQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/TenantQuery.java @@ -6,12 +6,14 @@ import eu.eudat.commons.enums.IsActive; import eu.eudat.data.DmpBlueprintEntity; import eu.eudat.data.TenantEntity; import eu.eudat.model.Tenant; +import eu.eudat.query.utils.QueryUtilsService; import gr.cite.tools.data.query.FieldResolver; import gr.cite.tools.data.query.QueryBase; import gr.cite.tools.data.query.QueryContext; import jakarta.persistence.Tuple; import jakarta.persistence.criteria.CriteriaBuilder; import jakarta.persistence.criteria.Predicate; +import org.hibernate.query.criteria.HibernateCriteriaBuilder; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -29,7 +31,14 @@ public class TenantQuery extends QueryBase { private Collection excludedIds; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); - public TenantQuery like(String value) { + + private final QueryUtilsService queryUtilsService; + + public TenantQuery(QueryUtilsService queryUtilsService) { + this.queryUtilsService = queryUtilsService; + } + + public TenantQuery like(String value) { this.like = value; return this; } @@ -104,8 +113,8 @@ public class TenantQuery extends QueryBase { } if (this.like != null && !this.like.isEmpty()) { - predicates.add(queryContext.CriteriaBuilder.or(queryContext.CriteriaBuilder.like(queryContext.Root.get(TenantEntity._code), this.like), - queryContext.CriteriaBuilder.like(queryContext.Root.get(TenantEntity._name), this.like) + predicates.add(queryContext.CriteriaBuilder.or(queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(TenantEntity._code), this.like), + queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(TenantEntity._name), this.like) )); } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/UserQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/UserQuery.java index 312fce85c..6495c50e2 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/UserQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/UserQuery.java @@ -181,7 +181,7 @@ public class UserQuery extends QueryBase { protected Predicate applyFilters(QueryContext queryContext) { List predicates = new ArrayList<>(); if (this.like != null && !this.like.isEmpty()) { - predicates.add(queryContext.CriteriaBuilder.like(queryContext.Root.get(UserEntity._name), this.like)); + predicates.add(queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(UserEntity._name), this.like)); } if (this.ids != null) { CriteriaBuilder.In inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(UserEntity._id)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/UserSettingsQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/UserSettingsQuery.java index 82a5d6932..1e39475b5 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/UserSettingsQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/UserSettingsQuery.java @@ -6,6 +6,7 @@ import eu.eudat.commons.enums.UserSettingsType; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.UserSettingsEntity; import eu.eudat.model.UserSettings; +import eu.eudat.query.utils.QueryUtilsService; import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.tools.data.query.FieldResolver; import gr.cite.tools.data.query.QueryBase; @@ -35,13 +36,14 @@ public class UserSettingsQuery extends QueryBase { private final UserScope userScope; private final AuthorizationService authService; - + private final QueryUtilsService queryUtilsService; public UserSettingsQuery( UserScope userScope, - AuthorizationService authService + AuthorizationService authService, QueryUtilsService queryUtilsService ) { this.userScope = userScope; this.authService = authService; + this.queryUtilsService = queryUtilsService; } public UserSettingsQuery like(String like) { @@ -163,8 +165,8 @@ public class UserSettingsQuery extends QueryBase { protected Predicate applyFilters(QueryContext queryContext) { List predicates = new ArrayList<>(); if (this.like != null && !this.like.isEmpty()) { - predicates.add(queryContext.CriteriaBuilder.or(queryContext.CriteriaBuilder.like(queryContext.Root.get(UserSettingsEntity._key), this.like), - queryContext.CriteriaBuilder.like(queryContext.Root.get(UserSettingsEntity._value), this.like) + predicates.add(queryContext.CriteriaBuilder.or(queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(UserSettingsEntity._key), this.like), + queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(UserSettingsEntity._value), this.like) )); } if (this.ids != null) { diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/utils/QueryUtilsService.java b/dmp-backend/core/src/main/java/eu/eudat/query/utils/QueryUtilsService.java index 59ec0fdfa..332783667 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/utils/QueryUtilsService.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/utils/QueryUtilsService.java @@ -1,8 +1,6 @@ package eu.eudat.query.utils; -import jakarta.persistence.criteria.AbstractQuery; -import jakarta.persistence.criteria.CriteriaBuilder; -import jakarta.persistence.criteria.Subquery; +import jakarta.persistence.criteria.*; import java.util.UUID; @@ -20,4 +18,6 @@ public interface QueryUtilsService { Subquery buildDmpUserAuthZSubQuery(AbstractQuery query, CriteriaBuilder criteriaBuilder, UUID userId); + + Predicate ilike(CriteriaBuilder criteriaBuilder, Expression path, String value); } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/utils/QueryUtilsServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/query/utils/QueryUtilsServiceImpl.java index 50d0a6165..685176533 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/utils/QueryUtilsServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/utils/QueryUtilsServiceImpl.java @@ -8,6 +8,7 @@ import eu.eudat.data.DescriptionEntity; import eu.eudat.data.DmpEntity; import eu.eudat.data.DmpUserEntity; import jakarta.persistence.criteria.*; +import org.hibernate.query.criteria.HibernateCriteriaBuilder; import org.springframework.stereotype.Component; import java.util.UUID; @@ -96,5 +97,15 @@ public class QueryUtilsServiceImpl implements QueryUtilsService { ) )); } + + + @Override + public Predicate ilike(CriteriaBuilder criteriaBuilder, Expression path, String value){ + if (criteriaBuilder instanceof HibernateCriteriaBuilder) { + return ((HibernateCriteriaBuilder) criteriaBuilder).ilike(path, value); + } else { + return criteriaBuilder.like(path, value); + } + } }