2014-11-12 3 views
0

Я использую CrudRepository Spring Data с mongodb, и у меня есть проблема с записью запроса, который выберет документ со значением определенного поддокумента. Вот пример:Spring data mongodb query для поля поддокумента

{ 
"_id" :, 
"_class" :, 
"matchHeader" : { 
    "suspend" : {}, 
    "active" : true, 
    "booked" : true, 
    "eventId" : NumberLong(1009314492), 
    "status" : "" 
}, 
"matchInfo" : { 

    } 
} 

}

мне нужно выбрать документ с конкретным EVENTID поле в matchHeader поддокументе. Я попытался написать такую ​​функцию findByMatchHeaderEventId (id), но это совсем не помогло. Как я могу это достичь?

ответ

1

Попробуйте

findByMatchHeader_EventId

вместо

findByMatchHeaderEventId

1

обхода свойств для вложенных свойств объясняется в Spring Data MongoDB Reference Documentation.

Вам необходимо правильно определить свой домен класс объекта (конструктор/геттеры/сеттеры опущенные):

public class MyDocument { 
    @Id 
    private String id; 
    private MatchHeader matchHeader; 
    private MatchInfo matchInfo; 
    ... 
} 

public class MatchHeader { 
    private Map<,> suspend; 
    private boolean active; 
    private boolean booked; 
    private Long eventId; 
    private String status; 
} 

и ваш репозиторий класса

public interface MyDocumentController extends MongoRepository<MyDocument, String> { 
    public List<MyDocument> findByMatchHeaderEventId(Long id); 
} 

В противном случае вы можете попробовать findByMatchHeader_EventId предложил в другой ответ.

Смежные вопросы