Как написать собственный @Query в Spring Data JDBC? - PullRequest
0 голосов
/ 25 октября 2018

В примерах JDBC Spring Data, как написать простой запрос в @Query аннотации?

например, в Репозиторий LegoSet , как добавить простой запрос findByName?

При попытке

@Query("select * from lego_set where name = :name") List<LegoSet> findByName(@Param("name") String name); выдается следующее сообщение об ошибке:

org.springframework.data.mapping.MappingException: Could not read property @org.springframework.data.annotation.Id() @org.springframework.data.relational.core.mapping.Column(value=handbuch_id, keyColumn=)private java.lang.Long example.springdata.jdbc.basics.aggregate.Manual.id from result set!
...

> Caused by: org.hsqldb.HsqlException: Column not found: manual_handbuch_idat org.hsqldb.error.Error.error(Unknown Source) at org.hsqldb.error.Error.error(Unknown Source) `

Кроме того, справочный документ, кажется, скопирован из какого-то общего документа данных пружины, поскольку в нем упоминалосьпроизводный запрос, которого еще нет в данных весны jdbc.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Я думаю, что вы пытаетесь выполнить собственный запрос. Итак, попробуйте, как показано ниже

@Query(  value = "SELECT * FROM lego_set ls where ls.name = :name",
           nativeQuery = true)
  List<LegoSet> findByName(@Param("name") String name);

Это должно работать.

0 голосов
/ 25 октября 2018

Сущность LegoSet имеет отношение 1: 1 к Manual.Spring Data JDBC выбирает такую ​​конструкцию, используя соединение, и ожидает представительные столбцы в ResultSet.

. Обратите внимание, что он ожидает столбцы, представляющие сам объект Manual плюс столбец, формирующий обратную ссылку наLegoSet.Кроме того, все имена столбцов должны начинаться с имени свойства + _, то есть manual_ в этом случае.

Сообщение об ошибке фактически сообщает вам о пропущенном столбце (по модулю пропущенного пробела): Column not found: manual_handbuch_id.

В качестве альтернативы вы также можете предоставить свой собственный RowMapper

Относительно документации:

Вы правы,Документация (почти) всех модулей Spring Data включает в себя общую часть, которая легко приводит к путанице. билет, чтобы найти лучшее решение .

...