繁体   English   中英

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

[英]How to drop a function with Hibernate/JDBC?

我正在尝试运行此查询

drop FUNCTION IF EXISTS time_factor;

我想通过createSQLQuery()doWork()在Hibernate会话中运行它。 像这样:

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

要么

sessionFactory.getCurrentSession().doWork(new Work() {
        @Override
        public void execute(Connection connection) throws SQLException {
            connection.prepareStatement(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删除函数?

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

不支持DROP FUNCTION但不支持H2数据库的JDBC / Hibernate。

您可以在此处查看支持的SQL语法: http//h2database.com/html/grammar.html

如果您希望使用H2创建和删除函数,请查找ALIAS 您可以使用CREATE ALIAS创建Java函数别名,并使用DROP ALIAS删除它们:

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

DROP ALIAS IF EXISTS MY_SQRT;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM