有没有办法用QueryDSL执行它?( 粗体部分 ):
SELECT * FROM Venue WHERE名称喜欢’%cafe%’ COLLATE Latin1_general_CI_AI
我在休眠状态下使用JPA。
您可以使用此处addFlag(QueryFlag.Position position, Stringflag)记录的方法。 类似于以下内容的内容应该可以满足您的要求:
addFlag(QueryFlag.Position position, Stringflag)
query.addFlag(QueryFlag.Position.END, "COLLATE Latin1_general_CI_AI");
在评论中回答您的问题,如果您需要一个支持多个谓词的解决方案,则可以使用此处记录BooleanTemplate的create(String template, Object one)方法。
BooleanTemplate
create(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);