如何检查参数是否正确传递到 Hibernate 本机查询?
这是我的 Spring Data 存储库:
public interface TasksRepository extends JpaRepository<Task, Long> {
@Query(value = "SELECT * FROM tasks_table WHERE jsonb_path_exists(task_tags, "
+ "'$[*] ? (@.entityCode == $code && @.entityId == $id)', "
+ "'{\"code\":\"?1\", \"id\":\"?2\"}')",
nativeQuery = true)
List<Task> findTasksByEntityCodeAndEntityId(String entityCode, UUID entityId);
}
这些是我的日志:
Hibernate:
SELECT
*
FROM
tasks_table
WHERE
jsonb_path_exists(task_tags, '$[*] ? (@.entityCode == $code && @.entityId == $id)', '{"code":"?1", "id":"?2"}')
但是我看不到在将查询传递给 PostgreSQL 13 之前检查变量是否被替换的方法;这看起来很奇怪,但与我也记录的经典派生查询一致,最终得到类似“where task0_.task_name=?”的跟踪。其中也没有显示参数值。
有谁知道为什么我的位置参数不被这个本机查询解释,因为我知道它们应该是?感谢您的任何提示!