#java #spring #mongodb #spring-boot #spring-data-mongodb
#java #spring #mongodb #spring-boot #spring-data-mongodb
Вопрос:
Я пытаюсь получить все записи в моей базе данных, но только reference
поля. В моем MongoRepository
случае я хочу использовать пользовательский запрос, поэтому он не использует имя метода для создания запроса. Похоже, следующее не работает:
public interface JvRepository extends MongoRepository<Jv, String> {
@Query(value = "{}", fields = "{ id : 0, reference : 1 }")
public List<String> findAllJvReferences();
}
public class Jv {
@Id
private String id;
private String reference;
}
Ошибка:
Jv не может быть приведен к
java.lang.String
Я говорю ему, чтобы id
он не получал, и reference
правильно ли это? Почему он не возвращает a String
, но все же a Jv
?
Я думаю, я должен передать что-то в значении, которое указывает Mongo выбрать все, но я понятия не имею, что. Или что-то еще не так с этим кодом?
Комментарии:
1. Используйте
List<Jv>
вместоList<String>
. Не волнуйтесьid
, поле не будет заполнено2. Это работает, да, все остальные поля равны нулю. Но нет ли способа, чтобы он действительно возвращал список строк, поскольку этот метод используется REST API, который должен возвращать только ссылки в списке. Я думаю, я мог бы перебрать список<Jv> и извлечь ссылки, но я надеялся, что этого не нужно делать.
3. Я думаю, вы могли бы предоставить пользовательскую реализацию, но возврат
List<Jv>
— это более простой подход. Вы можете просто преобразовать его вList<String>
, используя Stream API Java 8,jvs.stream().map(Jv::getReference).collect(Collectors.toList())
4. Хм, да, думаю, я буду придерживаться этого. Большое спасибо!