我正在尝试使用Spring JPA来创建ltree索引。我有一个包含如下路径的实体
@Type(type = "com.thomaster.ourcloud.model.filesystem.LTreeType")
@Column(columnDefinition="ltree")
private String relativePath;LTreeType类是从这里的Getting error when mapping PostgreSQL LTREE column in hibernate复制粘贴的。
在数据库中正确地完成了索引,添加了ltree扩展。不过,当我运行以下查询时
@Query(value = "SELECT * FROM file_system_element WHERE relative_path ~ lquery(:pathToSearch)", nativeQuery = true)
List<FileSystemElement> findAllByPath(@Param("pathToSearch") String pathToSearch);我得到了org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111。
当我将查询更改为
SELECT * FROM file_system_element WHERE relative_path ~ CAST(:pathToSearch AS lquery)
#OR TO THIS
SELECT * FROM file_system_element WHERE relative_path @> CAST(:pathToSearch AS ltree)
#OR TO THIS
SELECT * FROM file_system_element WHERE relative_path @> ltree(:pathToSearch)
#OR TO THIS
SELECT * FROM file_system_element WHERE ltree(relative_path) ~ lquery(:pathToSearch)我得到了同样的错误。
为
SELECT * FROM file_system_element WHERE relative_path @> lquery(:pathToSearch)我得到了
org.postgresql.util.PSQLException: ERROR: operator does not exist: ltree @> lquery以及:
SELECT * FROM file_system_element WHERE ltree(relative_path) ~ ltree(:pathToSearch)我得到了:
ERROR: operator does not exist: ltree ~ ltree正如你所看到的,我尝试了几乎所有的组合,仍然没有结果。我还在实体管理器上尝试了与原生查询相同的查询,但没有什么不同。这里我漏掉了什么?
发布于 2020-02-02 02:44:33
解决了它,这是我的错误。查询参数为
"folder.anotherFolder"
而不是
"folder.anotherFolder.*"
https://stackoverflow.com/questions/59956476
复制相似问题