如何使用 querydsl 调用 mysql 函数?
我有点着急,所以,我只想问一个关于querydsl的快速问题。根据我的研究,查询dsl不支持存储过程,但可以支持数据库函数。我的问题是,如何使用 querydsl 调用这些数据库函数?
我有点着急,所以,我只想问一个关于querydsl的快速问题。根据我的研究,查询dsl不支持存储过程,但可以支持数据库函数。我的问题是,如何使用 querydsl 调用这些数据库函数?
您可以使用基于 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)"));
调用 mysql 函数find_in_set的示例:
query.where(Expressions.booleanTemplate("find_in_set({0}, {1}) > 0", 1, "1,2,3"));
“> 0”是必须的,否则会意外的AST节点