【发布时间】:2017-04-16 23:51:32
【问题描述】:
我想通过 QueryDsl JPA 使用 Postgres 全文搜索。
在 SQL 中生成:
select *
from film
where to_tsquery ('tarzan') @@ to_tsvector('french',film.title) = true
获取标题中包含泰山的所有电影。
在 JPA 中,我定义了一个自定义函数“ftsMatch”,我可以像这样使用它:
String jpql = "select film from Film film where ftsMatch(:queryString, film.titre) = true";
我 QueryDSL 我想有机会在字符串类型上定义一个谓词:
QFilm.film.titre.ftsMatch('tarzan')
我没有找到任何解决方案
【问题讨论】:
-
JPQL 允许使用“FUNCTION(funcName, args)”。您不能只是将随机 SQL 函数转储到 JPQL 中,并且必须使用 FUNCTION
-
@Neil:我已经使用自定义方言通过 JPQL 解决了 pb,并在实现 org.hibernate.dialect.function.SQLFunction 的类中实现了该函数。问题是如何用 QueryDSL 解决同样的问题?
-
如前所述,不需要 JPA 专有解决方案(自定义方言),因为“FUNCTION”是 JPA 2.1 标准。而且由于 QueryDSL 应该在内部创建 JPQL,所以它应该有一个 FUNCTION 方法
标签: postgresql jpa querydsl