整理 QueryDSL-JPA 的提示

问题描述 投票:0回答:2

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

从地点选择 *,名称如“%cafe%”整理 Latin1_general_CI_AI

我将 JPA 与 hibernate 结合使用。

sql hibernate querydsl
2个回答
8
投票

您可以使用

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);

0
投票

使用最新 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

© www.soinside.com 2019 - 2024. All rights reserved.