如何使用querydsl调用mysql函数?

Man*_*Rai 13 java sql hibernate jpa querydsl

我很匆忙,我只是想问一个关于querydsl的快速问题.根据我的研究,查询dsl不支持存储过程,但可以支持数据库功能.我的问题是如何使用querydsl调用这些数据库函数?

Tim*_*per 19

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

例如

query.where(Expressions.booleanTemplate("func1({0}, {1})", arg1, arg2));
Run Code Online (Sandbox Code Playgroud)

如果你使用Hibernate 4.3或任何其他JPA 2.1兼容的提供者,你可以使用函数语法调用SQL函数https://bugs.eclipse.org/bugs/show_bug.cgi?id=350843

所以这个例子会变成

query.where(Expressions.booleanTemplate("function('func1', {0}, {1})", arg1, arg2)"));
Run Code Online (Sandbox Code Playgroud)

  • @Timo 我正在尝试这个,但我收到一个:org.hibernate.hql.internal.ast.QuerySyntaxException:意外的 AST 节点 (2认同)