Java 如何使用Hibernate/JDBC删除函数?

Java 如何使用Hibernate/JDBC删除函数?,java,sql,hibernate,jdbc,h2,Java,Sql,Hibernate,Jdbc,H2,我正在尝试运行此查询 drop FUNCTION IF EXISTS time_factor; 我想使用createSQLQuery()或doWork()在Hibernate会话中运行它。 像这样: sessionFactory.getCurrentSession().createSQLQuery(query).executeUpdate(); 或 这就是我得到的: Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL st

我正在尝试运行此查询

drop FUNCTION IF EXISTS time_factor;
我想使用
createSQLQuery()
doWork()
在Hibernate会话中运行它。 像这样:

sessionFactory.getCurrentSession().createSQLQuery(query).executeUpdate();

这就是我得到的:

Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "DROP FUNCTION[*] IF EXISTS TIME_FACTOR; "; expected "TABLE, INDEX, USER, SEQUENCE, CONSTANT, TRIGGER, VIEW, ROLE, ALIAS, SCHEMA, ALL, DOMAIN, TYPE, DATATYPE, AGGREGATE";
这是否意味着我不能通过JDBC/Hibernate删除函数


另外,如果有人知道我可以运行它的方法,我会非常感激。

不支持拖放功能的不是JDBC/Hibernate,而是H2数据库

您可以在此处查找支持的SQL语法:

如果要使用H2创建和删除函数,请查找
ALIAS
。 您可以使用
create ALIAS
创建Java函数别名,并使用
drop ALIAS
删除它们:

CREATE ALIAS MY_SQRT FOR "java.lang.Math.sqrt";

DROP ALIAS IF EXISTS MY_SQRT;
CREATE ALIAS MY_SQRT FOR "java.lang.Math.sqrt";

DROP ALIAS IF EXISTS MY_SQRT;