1
0
mirror of https://github.com/google/nomulus synced 2026-04-23 01:30:51 +00:00

Add a method to set a "not in" WHERE clause in CriteriaQueryBuilder (#1225)

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/google/nomulus/1225)
<!-- Reviewable:end -->
This commit is contained in:
Lai Jiang
2021-07-07 15:49:29 -04:00
committed by GitHub
parent e5b9ff1498
commit 2195ba90fa
2 changed files with 22 additions and 0 deletions

View File

@@ -62,6 +62,13 @@ public class CriteriaQueryBuilder<T> {
return where(root.get(fieldName).in(values));
}
/**
* Adds a WHERE clause to the query specifying that a value must not be in the given collection.
*/
public CriteriaQueryBuilder<T> whereFieldIsNotIn(String fieldName, Collection<?> values) {
return where(root.get(fieldName).in(values).not());
}
/**
* Adds a WHERE clause to the query specifying that a collection field must contain a particular
* value.

View File

@@ -152,6 +152,21 @@ class CriteriaQueryBuilderTest {
assertThat(result).containsExactly(entity3).inOrder();
}
@Test
void testSuccess_where_not_in_twoResults() {
List<CriteriaQueryBuilderTestEntity> result =
jpaTm()
.transact(
() -> {
CriteriaQuery<CriteriaQueryBuilderTestEntity> query =
CriteriaQueryBuilder.create(CriteriaQueryBuilderTestEntity.class)
.whereFieldIsNotIn("data", ImmutableList.of("aaa", "bbb"))
.build();
return jpaTm().query(query).getResultList();
});
assertThat(result).containsExactly(entity1, entity2).inOrder();
}
@Test
void testSuccess_where_in_twoResults() {
List<CriteriaQueryBuilderTestEntity> result =