【发布时间】:2018-12-06 10:16:34
【问题描述】:
我写了一个如下的 Postgres 查询,但它在构建时失败了。如何在 Spring-boot Hibernate 中实现?
@Query(value="SELECT t from CatalogView t WHERE t.locations=:locations AND STRING_TO_ARRAY(t.myColumn, ',') @> STRING_TO_ARRAY(:myColumn, ',')")
public Set<TrainerGuides> getData(@Param("locations") String locations,@Param("myColumn") String myColumn);
我为什么写这个? 将一堆用逗号分隔的字符串与 Postgres 中的无序字符串输入进行比较。
catalog
----------------------------------
id title keywords
----------------------------------
1 Title-1 k2,k1,k3,k4,k5
2 Title-2 k1,k3,k5,k6
通过将关键字与我的输入 k1,k2,k5 进行比较来选择行
在上面的例子中,id 为 1 的行必须出现。
SELECT *
FROM catalog
WHERE STRING_TO_ARRAY(keywords, ',') @> STRING_TO_ARRAY('k1,k2,k5', ',')
【问题讨论】:
-
不能使用参数插入表、列、函数等标识符名称。这是一种安全预防措施。
-
@Query是否表示原生查询?您将无法在 HQL 或 JPQL 中使用 DBMS 特定的函数和运算符 -
你必须在 @Query() 中设置 nativeQuery=true
-
@DHARMENDRASINGH 我能够构建它。我希望现在就会出现预期的结果。谢谢
标签: arrays postgresql hibernate spring-boot