一尘不染

整理关于QueryDSL- JPA的提示

sql

有没有办法用QueryDSL执行它?( 粗体部分 ):

SELECT * FROM Venue WHERE名称喜欢’%cafe%’ COLLATE Latin1_general_CI_AI

我在休眠状态下使用JPA。


阅读 139

收藏
2021-05-30

共1个答案

一尘不染

您可以使用此处addFlag(QueryFlag.Position position, Stringflag)记录的方法。
类似于以下内容的内容应该可以满足您的要求:

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

在评论中回答您的问题,如果您需要一个支持多个谓词的解决方案,则可以使用此处记录BooleanTemplatecreate(String template, Object one)方法。

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

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);
2021-05-30