有办法用QueryDSL执行它吗? (粗体部分):
从地点选择 *,名称如“%cafe%”整理 Latin1_general_CI_AI
我将 JPA 与 hibernate 结合使用。
您可以使用
addFlag(QueryFlag.Position position, String flag)
方法,记录于here。
类似以下内容应该可以满足您的要求:
query.addFlag(QueryFlag.Position.END, "COLLATE Latin1_general_CI_AI");
针对评论中您的问题,如果您需要一种支持多个谓词的解决方案,您可以使用
BooleanTemplate
的create(String template, Object one)
方法,记录于here。
类似以下内容应该可以满足您的要求:
BooleanTemplate.create("{0} COLLATE Latin1_general_CI_AI", venue.name.like("%cafe%"));
您的查询应类似于:
query
.from(venue)
.where(BooleanTemplate.create("{0} COLLATE Latin1_general_CI_AI", venue.name.like("%cafe%"))
.and(BooleanTemplate.create("{0} COLLATE Latin1_general_CI_AI", venue.name2.like("%milk%"))))
.list(venue.name, venue.name2);
使用最新 QueryDSL API 5.x 的解决方案
Expressions.stringTemplate("collate({0} as binary_ci)", someStringPath)
使用 Hibernate 查询语言
collate()
功能
https://docs.jboss.org/hibernate/orm/current/querylanguage/html_single/Hibernate_Query_Language.html