如何使用 querydsl 调用 mysql 函数?

2022-09-03 05:37:20

我有点着急,所以,我只想问一个关于querydsl的快速问题。根据我的研究,查询dsl不支持存储过程,但可以支持数据库函数。我的问题是,如何使用 querydsl 调用这些数据库函数?


答案 1

您可以使用基于 TemplateExpression 的任意 JPQL 语法注入到查询中。

例如:

query.where(Expressions.booleanTemplate("func1({0}, {1})", arg1, arg2));

如果使用 Hibernate 4.3 或任何其他符合 JPA 2.1 的提供程序,则可以使用 FUNCTION 语法调用 SQL 函数 https://bugs.eclipse.org/bugs/show_bug.cgi?id=350843

所以这个例子会变成

query.where(Expressions.booleanTemplate("function('func1', {0}, {1})", arg1, arg2)"));

答案 2

调用 mysql 函数find_in_set的示例:

query.where(Expressions.booleanTemplate("find_in_set({0}, {1}) > 0", 1, "1,2,3"));

“> 0”是必须的,否则会意外的AST节点


推荐