当前位置: 首页 > 知识库问答 >
问题:

HSQLDB ORACLE用户缺少权限或找不到对象:REGEXP_LIKE

茅炯
2023-03-14

我在hsqldb测试中遇到了一点问题。

<bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
    <property name="url" value="jdbc:hsqldb:mem:castor;sql.syntax_ora=true" />
    <property name="username" value="sa" />
    <property name="password" value="" />
</bean>
<prop key="hibernate.dialect">fr.edf.mpv2.castor.persistance.HsqlOracleDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.hbm2ddl.import_files">import.sql</prop>

我在import.sql中添加了我需要的所有内容,它工作得很好。

我创建了一个类:

 public class HsqlOracleDialect extends Oracle10gDialect {

    public HsqlOracleDialect() {
        super();
    }

    @Override
    protected void registerFunctions() {
            registerFunction("regexp_like", new SQLFunctionTemplate(Hibernate.BOOLEAN,
     "case when (regexp_like(?1,?2)) then 1 else 0 end)"));
    }
}

但是我得到了这个错误:

共有1个答案

宗政欣可
2023-03-14

您在自定义函数的定义中使用了原始函数regexp_like。因此,当HSQLDB试图创建它时,它失败了,因为它正在寻找一个具有此名称的内置函数来委托实现。

HSQLDB的内置函数regexp_matches似乎是Oracle的regexp_like对应函数,因此应该可以这样做:

@Override
protected void registerFunctions() {
  registerFunction(
    "regexp_like",
    new SQLFunctionTemplate(Hibernate.BOOLEAN, "regexp_matches(?1,?2)")
  );
}
 类似资料:
  • 所以我已经在谷歌和stack上搜索过了,我找到了一堆有同样错误的人,但是没有一个解决方案能解决我的问题。 我正在使用的: Java 8 JavaEE7 TomEE 7.0 M3 JPA 2.0 ORM 1.0 Postgres公司 我认为问题在于命名查询,也许还有ManyToMany关系。 User.java SystemRole.java 持久性.xml user-orm.xml context

  • 我遵循了以下基本的Spring批量教程https://spring.io/guides/gs/batch-processing/ . > 我正在使用IntelliJ 14并创建了一个Spring批处理项目 我在用Mavin。我还有pom。xml文件。 Mvn clean install运行良好,即使应用程序。java告诉我“无法自动连线。找不到JdbcTemplate类型的bean”@Autowi

  • 我发现这个错误在整个互联网上出现了很多次,但我根本没有找到适合我的情况的解决方案。我有一个 HSQL 数据库 - 我已成功连接到数据库中的一个表。我继续在数据库中创建另一个表 - 根据需要修改完全相同的 Java 代码,但它带来了错误:java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象:USER。 我发现在我的文件存储脚本中,PRODUCT表创建的代码就在那

  • 我正在尝试做一些Ucanaccess实践,用Java管理一些数据库。我得到了一个我不知道如何解决的错误。 我在Access中有一个名为USERS的表: 自动编号,短文本,短文本,数字。 代码继续,但只有一些条件和查询。

  • 当我试图将数据放入数据库时,我出现了一个错误,这是我的注册函数