Query subQuery = Search.getSearchManager(cache).buildQueryBuilderForClass(Person.class).get().keyword()
.onField("name").matching("Goat").createQuery();
Query query = Search.getSearchManager(cache).buildQueryBuilderForClass(Person.class).get().all().except().createQuery();
CacheQuery cacheQuery = Search.getSearchManager(cache).getQuery(query);
List<Object> found = cacheQuery.list();
Assert.assertEquals(3, found.size());
assert found.contains(person2);
assert found.contains(person1);
assert found.contains(person3);
query = Search.getSearchManager(cache).buildQueryBuilderForClass(Person.class).get().all().except(query).createQuery();
cacheQuery = Search.getSearchManager(cache).getQuery(query);
found = cacheQuery.list();
Assert.assertEquals(0, found.size());
query = Search.getSearchManager(cache).buildQueryBuilderForClass(Person.class).get().all().except(subQuery).createQuery();
cacheQuery = Search.getSearchManager(cache).getQuery(query);
found = cacheQuery.list();
Assert.assertEquals(1, found.size());
assert found.contains(person1);
}