整理有关 QueryDSL- JPA 的提示

Collate hint on QueryDSL- JPA

有办法用QueryDSL来执行吗? (加粗部分):

SELECT * FROM WHERE WHERE NAME Like '%cafe%' COLLATE Latin1_general_CI_AI

我正在将 JPA 与休眠一起使用。

您可以使用 addFlag(QueryFlag.Position position, String flag) 方法,记录在案 here

类似于以下内容应该可以满足您的要求:

query.addFlag(QueryFlag.Position.END, "COLLATE Latin1_general_CI_AI");

针对您在评论中提出的问题,如果您需要一种支持多个谓词的解决方案,您可以使用 BooleanTemplatecreate(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);