- У меня есть представления в базе данных SQL без очевидного первичного ключа (составного или иного)
- Я хотел бы получить к ним доступ через JPA
Я читал, что должен иметь возможность обрабатывать представления в JPA так же, как я обрабатываю таблицы (используя аннотацию @Table и т. д.). Однако без первичного ключа я должен эффективно создавать составной ключ из КАЖДОЙ СТОЛБЦЫ (фактически, это то, что по умолчанию делает инструмент обратного проектирования Hibernate).
Однако, если я это сделаю, возникнут нежелательные побочные эффекты. Например.
Необходимо написать весь код, указывающий на атрибуты первичного ключа, а не на представления:
myViewObject.getPrimaryKey().getFirstName()
Невозможно использовать методы "findBy..." в репозитории Spring (поскольку этот атрибут является частью "идентификатора" представления, а не одним из его атрибутов).
Мой вопрос: как мне сопоставить представления таким образом, чтобы я мог легко получить доступ к их атрибутам с помощью JPA?
Примечание. Я очень рад узнать, что я использую совершенно неправильный подход. Кажется, это настолько распространенная проблема, что должно быть лучшее решение.
getFirstName()
, который делаетreturn this.getPrimaryKey().getFirstName()
. Тогда вам нужно написать длинную версию только один раз. Что касается неправильного подхода, у нас в приложении более 400 объектов/таблиц, и у нас нет ни одного View-Entity. Однажды я попытался использовать его, потому что думал, что это поможет, но он начал вызывать проблемы, поэтому я создал такое же «представление» в JPQL, которое выполняло ту же работу и давало мне больше гибкости. - person DuncanKinnear   schedule 09.07.2015