Я запускаю приложение Spring, которое использует Hibernate при поддержке Postgres. Мне нужно вызвать Postgres системную функцию pg_xact_commit_timestamp
(см. https://www.postgresql.org/docs/9.5/functions-info.html) в моем запросе. Вызов его в нативном запросе работает просто отлично, но есть ли способ выполнить sh без использования нативного запроса? Собственный запрос выглядит примерно так, где from
и to
являются временными метками:
@Query(
nativeQuery = true,
value =
""
+ "select a.* from my_db.some_relation_a a"
+ " join my_db.some_relation_b b on b.relation_a_id = a.id"
+ " where pg_xact_commit_timestamp(a.xmin) between :from and :to"
);
Когда я пытаюсь использовать pg_xact_commit_timestamp(a.xmin)
в не нативном запросе, он думает, что это выражение пути и может не интерпретировать это. Мне нужно уточнить это, потому что при присоединении TX ID является неоднозначным. Я обнаружил, что JPQL имеет синтаксис FUNCTION
, который можно использовать для вызова функций базовой БД, но я не уверен, как правильно передать идентификатор TX.