【发布时间】:2019-08-16 11:31:27
【问题描述】:
我的要求是我需要在不使用 NATIVE 查询的情况下从 Spring Boot 应用程序调用 oracle 函数。
下面是我的以日期为输入的 oracle 函数
create or replace FUNCTION todate(src_dt IN date)
RETURN date
is
BEGIN
RETURN(to_date(src_dt));
END;
我在互联网上搜索解决方案,但到目前为止没有找到。人们说需要创建一些自定义方言,但没有找到任何完美的分步链接。
下面是我的java代码:-
Query query1 = entityManager.createQuery("select todate(ActSubT.createdDt) from ActSubT ActSubT");
List<Object> result=query1.getResultList();
这段代码应该运行,到目前为止它给出的错误是oracle函数,我没有在application.yml文件中配置任何东西。
我得到以下错误
java.lang.IllegalArgumentException: org.hibernate.QueryException:
No data type for node:
org.hibernate.hql.internal.ast.tree.MethodNode
\-[METHOD_CALL] MethodNode: '('
+-[METHOD_NAME] IdentNode: 'todate' {originalText=todate}
请帮忙
【问题讨论】:
-
@parthivrshah 我之前已经完成了这个答案,但我的要求是不使用 NATIVE 查询我需要调用 db 函数
-
我不认为你可以在没有原生查询的情况下调用 db 函数
-
@parthivrshah 你能检查这个链接吗thoughts-on-java.org/database-functions 我们有选项,但我无法在我们的 yml 文件中配置自定义方言条目
-
我从未尝试过。
标签: java oracle jpa createquery