метод репозитория SpringData Mongo для возврата определенного списка свойств документа

используя данные Spring для mongodb, как указать тип возвращаемого значения метода репозитория, чтобы включить определенное свойство из документа? Бывший:

@Document (collection = "foo")
class Foo {
   String id
   String name
   ... many more attributes
}

репозиторий:

interface FooRepository extends MongoRepository<Foo, String> {
   @Query { value = "{}", fields = "{'name' : 1}" }
   List<String> findAllNames()
}

Выше findAllNames работает как положено и извлекает из документа только свойство имени. Однако возвращаемый объект данных spring представляет собой string представление объекта Foo, который имеет свойства id и name со значениями и остальными атрибутами как нулевые. Вместо объектов Foo мне нужно получить List<String>, которые представляют имена.


person suman j    schedule 03.04.2014    source источник


Ответы (1)


На данный момент я использовал пользовательский интерфейс для достижения этой цели. Метод findAllNames() перенесен из интерфейса репозитория данных Spring в мой пользовательский интерфейс.

interface FooRepositoryCustom {
    List<String> findAllNames()
}
interface FooRepository extends MongoRepository<Foo, String>, FooRepositoryCustom {
}

@Component
class FooRepositoryImpl implements FooRepositoryCustom {
   @Autowired
   MongoOperations mongoOperations;

  List<String> findAllNames() {
    //using mongoOperations create the query and execute. Return the property values from document
 }
}
person suman j    schedule 08.04.2014
comment
Привет, есть ли другой способ сделать это? - person Tim Schwalbe; 03.08.2017