Spring Data Проекции - PullRequest
       11

Spring Data Проекции

0 голосов
/ 13 мая 2018

У меня есть User сущность с множеством полей (я опускаю код, потому что он очень длинный, и я не думаю, что это важно в этом случае, дайте мне знать, если вам это нужно).

Это часть моего хранилища:

interface UserRepository: JpaRepository<User, String>{
    fun findByNameContainingIgnoreCase(name: String, page: Pageable): Page<UserProfile>?
}

Теперь я определил следующую проекцию:

interface UserProfile{
    fun getUsername(): String
    fun getName(): String
    fun getFavoriteTags(): MutableSet<Tag>?
    fun getFavoriteDocuments(): MutableSet<Document>?
    fun getAverageScore(): Double
    fun getUserPicPath(): String
    fun getDocuments(): MutableSet<Document>?
}

Проблема в том, что я не хочу возвращать список пользовательских документов, а номер его документов. Я пробовал с:

@Value("#{target.documents?.count}")
fun getDocumentsCount(): Int?

но он не распознает поле счета.

Я также пытался с:

@JsonIgnore
    fun getDocuments(): MutableSet<Document>?
    fun getDocumentsCount(): Int? =  getDocuments()?.size

но он не распознает реализацию метода по умолчанию.

Я не знаю, что еще попробовать. Может кто-нибудь мне помочь? Большое спасибо!

1 Ответ

0 голосов
/ 13 мая 2018

Вы не сможете использовать count в аннотации Spring, потому что это не настоящий метод коллекций;это функция расширения .

Вам необходимо объединить два существующих решения.Попробуйте это с помощью аннотации Value, но с использованием правильной функции MutableSet:

@Value("#{target.documents?.size}")

...