【发布时间】:2020-05-22 09:49:12
【问题描述】:
我正在用 hibernate 编写代码,其中我必须在查询的 SELECT 子句中使用 MySQL extractvalue 函数。但是,我收到错误消息:
java.lang.IllegalArgumentException: org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode
\-[METHOD_CALL] MethodNode: '('
+-[METHOD_NAME] IdentNode: 'EXTRACTVALUE' {originalText=EXTRACTVALUE}
相应的 MySQL 查询(如下所述)在 MySQL db 中执行时可以正常工作,但不能通过 Java:
SELECT EXTRACTVALUE(XMLRAW_DATA_IN_STRING_FORMAT,'//ns:Id') as ErrorId,
FROM TEMP_TABLE;
【问题讨论】:
-
你使用什么休眠版本?你使用什么休眠方言?函数
extractvalue应该在休眠方言中声明。如果没有,你应该扩展方言并自己声明这个函数。 -
我们使用hibernate 5.3.7并且不能在hibernate方言中声明extractvalue,因为有些地方我们确实需要整个数据而不仅仅是提取的值。请建议我如何扩展方言并自行声明此功能?
标签: mysql hibernate spring-boot hql extract-value