Сохранение значения собственного запроса с помощью resultSetMapping во внешних файлах свойств - PullRequest
0 голосов
/ 28 сентября 2018

Подход по умолчанию (в сущности):

@Entity
@Table(...)
@SqlResultSetMapping(name = "SomeName", classes = @ConstructorResult(targetClass = SomeClass.class, columns = {...}))
@NamedNativeQuery(name = "CurrEntity.getSomeSelect"), query = "...", resultSetMapping = "SomeName")
public class CurrEntity ...

В JpaRepository он работает правильно с методом List<SomeClass> getSomeSelect()

Запрос очень большой, и я хочу переместить его в файл свойств.Это очень простая задача - просто создайте classpath:/META-INF/jpa-named-queries.properties по умолчанию или измените новый путь с помощью @EnableJpaRepositories(namedQueriesLocation = "classpath:new-name.properties"), и тогда я смогу удалить @NamedNativeQuery из класса сущностей и использовать метод в JpaRepository.

Но!Теперь я не могу установить отображение результатов, которое было в @NamedNativeQuery (resultSetMapping = "SomeName").

Я пытался найти решение, но ничего не нашел.Также я осмотрел spring-jpa-data и тоже ничего не нашел.Может быть, другие способы присутствуют?

1 Ответ

0 голосов
/ 29 сентября 2018

Вы можете поместить свои запросы в файл с именем orm.xml.Этот файл должен находиться в каталоге META-INF вашего пути к классам:

В orm.xml вы можете делать все, что можете с аннотациями.Узлы XML также имеют то же имя, но с - вместо регистра верблюда:

Узнайте больше здесь: https://gerardnico.com/jpa/orm.xml

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