【发布时间】:2021-04-28 13:30:52
【问题描述】:
我正在尝试使用本机查询从 postgres 数据库中获取树,下一个查询使用 psql 终端运行良好:
SELECT col_1 FROM my_tree WHERE parent_id ~ lquery('*.C.*')
但是当我使用实体管理器添加相同的查询时:
private List<String> fetchTreeByParentId() {
Query query = entityManager.createNativeQuery("SELECT col_1 FROM my_tree WHERE parent_id ~ lquery('*.C.*')");
return query.getResultList();
}
我收到下一个错误:
2021-04-28 08:21:51.105 WARN 107978 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 42883
2021-04-28 08:21:51.105 ERROR 107978 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : ERROR: function lquery(unknown) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Position: 65
我缺少一些东西...也许更新 postgresql jar?
项目为spring boot 2.4.2
【问题讨论】:
-
也许您的两个会话的 search_path 设置不同?如果您的架构限定了函数怎么办?
-
已经尝试过使用类似
SELECT col_1 FROM my_schema.my_tree WHERE parent_id ~ lquery('*.C.*')的架构,也尝试过使用强制转换SELECT col_1 FROM my_tree WHERE parent_id ~ cast('*.C.*' as lquery)...使用强制转换的错误是数据类型lquery不存在
标签: postgresql spring-data ltree