From 8dced1f8137c631a03801a2778213c8ed7828a24 Mon Sep 17 00:00:00 2001 From: mikereiche Date: Fri, 26 Aug 2022 16:02:10 -0700 Subject: [PATCH] Fix arrayContaining n1ql generated. 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/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/query/QueryCriteria.java b/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/query/QueryCriteria.java index 190105e09..7269af2cd 100644 --- a/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/query/QueryCriteria.java +++ b/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/query/QueryCriteria.java @@ -331,12 +331,12 @@ public QueryCriteria arrayContaining(@Nullable Object o) { } 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/spring-data-couchbase/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryIntegrationTests.java b/spring-data-couchbase/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryIntegrationTests.java index d91d0d35b..77851793f 100644 --- a/spring-data-couchbase/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryIntegrationTests.java +++ b/spring-data-couchbase/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryIntegrationTests.java @@ -140,6 +140,11 @@ void findByMatchingQuery() { .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/spring-data-couchbase/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java b/spring-data-couchbase/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java index 0b701417b..2c24b1b07 100644 --- a/spring-data-couchbase/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java +++ b/spring-data-couchbase/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java @@ -180,7 +180,7 @@ void testNotContaining() { @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