Использование querydsl с неопределенной схемой с монго и весенней загрузкой - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть следующее отображение:

@Document
class Event {
   Object carbonCopy; 
}

carbonCopy имеет несколько атрибутов, и его схема не определена - различные события могут иметь различный набор атрибутов.Предположим, что carbonCopy имеет status поле.Мне нужно найти все Event с carbonCopy.status, равными NEW.Это возможно с запросом DSL, как?Я борюсь с различными смесями Path и Expression безрезультатно.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Вы можете использовать подобное, как в терминале db.events.find({"carbonCopy.status":"NEW"}) в терминологии, если вам также необходимо существование

db.events.find({carbonCopy.status:{"$exists":true}},"carbonCopy.status":"NEW"})

СЕЙЧАС, когда дело доходит до SDM

Criteria criteria = Criteria.where("carbonCopy.status").is("NEW")

Query query = new Query(criteria);

return mongoTemplate.findOne(query, Event.class);

Criteria criteria = Criteria.where("carbonCopy.status").is("NEW").And("carbonCopy.status").exists(true) Query query = new Query(criteria); return mongoTemplate.findOne(query, Event.class);

0 голосов
/ 21 ноября 2018

Это возможно со следующим фрагментом кода:

QEvent event = QEvent.event;

PathBuilder<Event> query = new PathBuilder<Event>(Event.class, "entity");
BooleanExpression expr = query.getMap("objectCarbonCopy", String.class, String.class).get("status").eq(Expressions.constant("NEW"));

Где QEvent - это класс, сгенерированный querydsl.

...