NonUniqueResultException в приложении Spring Boot - PullRequest
0 голосов
/ 18 июня 2019

В приложении Spring Boot / Kotlin у меня есть этот репозиторий:

interface CatRepository : CrudRepository<Cat, Long> {

    @Query(value = "SELECT DISTINCT c.color FROM cat c", nativeQuery = true)
    fun findColors(): List<String>
}

Тогда в моем контроллере у меня есть это:

@Controller
class HtmlController(private val repository: CatRepository) {

    @GetMapping("/")
    fun index(model: Model): String {
        model["colors"] = repository.findColors()
        return "index"
    }

}

Тогда в моем шаблоне у меня есть это:

<select name="color">
    {{#colors}}
        <option value="">{{.}}</option>
    {{/colors}}
</select>

Когда в таблице cat базы данных есть только один cat, это работает.Когда я добавляю другое, я получаю эту ошибку:

NonUniqueResultException: запрос не возвращает уникальный результат: 2

Куда я иду не так?

1 Ответ

1 голос
/ 18 июня 2019

Назовите свой метод

findAllColors() 

, чтобы сообщить Spring Data, что возвращаемый тип является коллекцией.

Я не могу найти какую-либо документацию, но есть сообщение в блоге на эту тему, которое говорит:

  1. Уметь находить методы по имени и (необработанному) типу параметра.
  2. Методы с именем… Все (…) влияют на коллекцию элементов и / или возвращают коллекцию.
  3. Методы, принимающие идентификатор, называются… ById (…).4 Давайте отбросим идентификатор расширяет Serializable требование.

Источник: https://spring.io/blog/2017/06/20/a-preview-on-spring-data-kay#improved-naming-for-crud-repository-methods

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...