From d3f1095474eb6a5a6a8572eca4ac7d9846c4d256 Mon Sep 17 00:00:00 2001 From: Michael Reiche <48999328+mikereiche@users.noreply.github.com> Date: Fri, 26 Aug 2022 16:18:01 -0700 Subject: [PATCH] Fix arrayContaining n1ql generated. (#1548) Closed #1545. --- .../data/couchbase/core/query/QueryCriteria.java | 4 ++-- .../core/CouchbaseTemplateQueryIntegrationTests.java | 5 +++++ .../data/couchbase/core/query/QueryCriteriaTests.java | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/springframework/data/couchbase/core/query/QueryCriteria.java b/src/main/java/org/springframework/data/couchbase/core/query/QueryCriteria.java index 190105e0..7269af2c 100644 --- a/src/main/java/org/springframework/data/couchbase/core/query/QueryCriteria.java +++ b/src/main/java/org/springframework/data/couchbase/core/query/QueryCriteria.java @@ -331,12 +331,12 @@ public class QueryCriteria implements QueryCriteriaDefinition { } public QueryCriteria arrayContaining(boolean ignoreCase, @Nullable Object o) { - operator = "array_containing"; + operator = "array_contains"; if (ignoreCase) { throw new CouchbaseException("ignoreCase not supported in IN and NOT_IN"); } value = new Object[] { o }; - format = "array_containing(%1$s, %3$s)"; + format = "array_contains(%1$s, %3$s)"; return this; } diff --git a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryIntegrationTests.java index e6e749f1..9005bd5b 100644 --- a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryIntegrationTests.java @@ -133,6 +133,11 @@ class CouchbaseTemplateQueryIntegrationTests extends JavaIntegrationTests { .matching(specialUsers).all(); assertEquals(1, foundUsers.size()); + + Query arrayContaining = new Query(QueryCriteria.where(i("firstname")).arrayContaining("not_match_anything")); + final List foundArrayContaining = couchbaseTemplate.findByQuery(User.class).withConsistency(REQUEST_PLUS) + .matching(arrayContaining).all(); + assertEquals(0, foundArrayContaining.size()); } @Test diff --git a/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java b/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java index 0b701417..2c24b1b0 100644 --- a/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java @@ -180,7 +180,7 @@ class QueryCriteriaTests { @Test void testArrayContaining() { QueryCriteria c = where(i("name")).arrayContaining("Elvis"); - assertEquals("array_containing(`name`, \"Elvis\")", c.export()); + assertEquals("array_contains(`name`, \"Elvis\")", c.export()); } @Test