整理有关 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");
针对您在评论中提出的问题,如果您需要一种支持多个谓词的解决方案,您可以使用 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来执行吗? (加粗部分):
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");
针对您在评论中提出的问题,如果您需要一种支持多个谓词的解决方案,您可以使用 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);