Spring custom @Query с инкрементной переменной - PullRequest
2 голосов
/ 09 мая 2019

У меня есть запрос, который сопоставляется с пользовательским объектом:

@Query("SELECT new com.mypackage.CmcXml(c.nom, c.prenom, c.genre "+
                "FROM Cmc c")
List<CmcXml> getExportCmc();

Итак, я получаю такой результат:

{"NOM1", "PRENOM1", "GENRE1"},
{"NOM2", "PRENOM2", "GENRE2"},
{"NOM3", "PRENOM3", "GENRE3"}

Я хотел бы иметь счетчик, который увеличивается при получении данных:

@Query("SELECT new com.mypackage.CmcXml(myCounter, c.nom, c.prenom, c.genre "+
                "FROM Cmc c")
List<CmcXml> getExportCmc();

Результат, который я хочу:

{1, "NOM1", "PRENOM1", "GENRE1"},
{2, "NOM2", "PRENOM2", "GENRE2"},
{3, "NOM3", "PRENOM3", "GENRE3"}

Можно ли это сделать в @Query или мне нужно пройти весь список после запроса?

Ответы [ 2 ]

1 голос
/ 09 мая 2019

Нет, номер строки не поддерживается в jpa / hibernate.Вы должны использовать собственный запрос.

0 голосов
/ 09 мая 2019

Это невозможно в JPA, поскольку JPA работает с сущностями, а сущности, в свою очередь, сопоставляются с таблицами в базе данных.Номер строки соответствует набору результатов и на самом деле не существует в таблице базы данных.

Вы можете попробовать что-то, как показано ниже, использование собственного запроса зависит от вашей базы данных.

SELECT @rownumber\\:=@rownumber+1 as rownumber, column From Table

Или, как предложил JB Nizet в комментариях, вы можете использовать свою собственную логику для отображения этих объектов на объекты со счетчиком.

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