diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/query/EntityKeyMapping.java b/dao/src/main/java/org/thingsboard/server/dao/sql/query/EntityKeyMapping.java index 3328ceb4fa..7a86431da0 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/query/EntityKeyMapping.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/query/EntityKeyMapping.java @@ -561,18 +561,16 @@ public class EntityKeyMapping { stringOperationQuery = String.format("%s not like :%s or %s is null)", operationField, paramName, operationField); break; case IN: - value = value.replaceAll("'","").replaceAll("\"", ""); stringOperationQuery = String.format("%s in (:%s))", operationField, paramName); break; case NOT_IN: - value = value.replaceAll("'","").replaceAll("\"", ""); stringOperationQuery = String.format("%s not in (:%s))", operationField, paramName); break; } switch (stringFilterPredicate.getOperation()) { case IN: case NOT_IN: - ctx.addStringListParameter(paramName, List.of(value.trim().split("\\s*,\\s*"))); + ctx.addStringListParameter(paramName, getListValuesWithoutQuote(value)); break; default: ctx.addStringParameter(paramName, value); @@ -580,6 +578,10 @@ public class EntityKeyMapping { return String.format("((%s is not null and %s)", field, stringOperationQuery); } + private List getListValuesWithoutQuote(String value) { + return List.of(value.replaceAll("'", "").replaceAll("\"", "").trim().split("\\s*,\\s*")); + } + private String buildNumericPredicateQuery(QueryContext ctx, String field, NumericFilterPredicate numericFilterPredicate) { String paramName = getNextParameterName(field); ctx.addDoubleParameter(paramName, numericFilterPredicate.getValue().getValue());