Об отображении идентификатора объекта
Если вы можете изменить определение представления, вы можете использовать добавление rownum в качестве столбца.
Обычно оно относится к СУБД.Идея состоит в том, чтобы сделать номер строки в таблице идентификатором сущности.
В качестве альтернативы вы можете использовать генератор уникального идентификатора.UUID
возможно.Наконец, вы можете придерживаться нативного SQL, используя JPA / Hibernate, чтобы отобразить нативные результаты запроса в определенный класс, представляющий данные представления.
О репозитории данных Spring
Если представления не вписываются естественным образом в требования к репозиторию данных Spring, это, вероятно, означает, что использование представлений вместо таблиц необязательно подходит для,
Действительно, классы репозиториев Spring Data, такие как CrudRepository
или JpaRepository
, предназначены для обеспечения готовых операций CRUD и некоторой дополнительной обработки для конкретного класса сущностей.
Представления в терминах СУБДне включается в выбранный вами, но вы не обновляете, не вставляете и не удаляете напрямую ни одну строку из представления.
Кроме того, что будет дополнительным преимуществом для использования таких компонентов репозитория для представления?Вы почти не будете использовать сгенерированную реализацию, предоставленную Spring.
В вашем случае, если вы определите представление как сущность, я думаю, что использование JpaTemplate
будет иметь больше смысла.
Это просто слой поверх API JPA.
От документация :
JpaTemplate можно рассматривать как прямую альтернативу работе с нативным API-интерфейсом EntityManager JPA (с помощью общей ссылки EntityManager, как описано выше).Основным преимуществом является его автоматическое преобразование в DataAccessExceptions;основным недостатком является то, что он вводит еще один тонкий слой поверх нативного API JPA.Обратите внимание, что преобразование исключений также может быть достигнуто с помощью AOP;проверить PersistenceExceptionTranslationPostProcessor