如何在 JPA/Hibernate NamedQuery 中指定数据库函数?
奇怪的是,休眠 JQL 不能识别 RIGHT 函数。在不使用子字符串的情况下,休眠中有没有办法在 NamedQuery 中指定任何有效的数据库函数?我不想让它成为原生查询或 CriteriaQuery。
JPQL 之前的 JPA 2.1 不支持直接使用数据库函数(除了那些因为使用 JPQL 函数而被调用的函数)。
根据 JPA 2.1 规范,函数调用如下:
function_invocation::= FUNCTION(function_name {, function_arg}*)
函数参数 ::=
文字 |
state_valued_path_expression |
输入参数 |
标量表达式
在 RIGHT 函数的情况下,它类似于:
FUNCTION("RIGHT, "some_string_possibly_path", 3)
使用 Hibernate 的一种可能性是扩展方言,如本答案中所述。