Выполнить два запроса @NamedNativeQuery для одного и того же класса сущностей
Я хочу определить два @NamedNativequery на классе сущности. При связывании для определения затмения выдает ошибку.
Дублирующая аннотация неповторяемого типа @NamedNativeQuery. Только типы аннотаций с пометкой @Repeatable могут использоваться несколько раз на одной цели.
Из этой ошибки я знаю, что мы не можем определить два определения двух @NamedNativeQuery класса сущностей, например
@Entity
@Table(name = "abc")
@NamedNativeQuery(name = "ABC.getSomeMethod1" query = "some_query",resultSetMapping ="abcDTO")//1st name query
// @NamedNativeQuery(name = "some_name" query = "some_query",resultSetMapping ="some_dto")//try to define second query , but gives error
public class ABC {
}
Я использую весенний репозиторий на уровне дао, чтобы вызвать метод, который связывается с этим запросом
public interface SomeInterface extends JpaRepository<ABC, Long> {
@Query(nativeQuery =true)
List<ABCDTO> getSomeMethod1(@Param("someParam1") long someParam1, @Param("someParam2") String someParam2);
}
Senario - это то, что я хочу запустить 1-й собственный запрос sql (который работает нормально), а затем выполнить 2-й собственный запрос sql (хочу запустить его также из того же). Как решить это или Какое возможное решение.
Если таким образом я не могу выполнить два нативных SQL-запроса, то есть ли другой способ добиться этого.
1 ответ
Вы можете определить несколько именованных запросов, как это
@NamedNativeQueries({
@NamedNativeQuery(name = "ABC.getSomeMethod1"
query = "some_query",resultSetMapping ="abcDTO"
),
@NamedNativeQuery(name = "some_name"
query = "some_query",resultSetMapping ="some_dto"
)
})
Затем на бизнес-уровне под транзакцией вы можете вызывать эти два запроса один за другим,
Если это простое соединение между двумя объектами и лучше выбрать и отобразить, перейдите к объединению. Всегда не забывайте иметь индекс этих столбцов в таблице;)