Java HSQLDB ORACLE用户缺少权限或找不到对象:类似REGEXP_
我对hsqldb测试有点问题 我使用Oracle11g作为项目的数据源,使用hsqldb-2.3.2.jar进行测试 在一个查询中,我使用了这个regexpJava HSQLDB ORACLE用户缺少权限或找不到对象:类似REGEXP_,java,oracle11g,hsqldb,Java,Oracle11g,Hsqldb,我对hsqldb测试有点问题 我使用Oracle11g作为项目的数据源,使用hsqldb-2.3.2.jar进行测试 在一个查询中,我使用了这个regexp和regexp_LIKE(code_SC,'*PL[0-9]\u J5[1-9]$) 我无法用hsqldb进行测试,我已将数据源配置为: <bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
和regexp_LIKE(code_SC,'*PL[0-9]\u J5[1-9]$)
我无法用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>
但我得到了这个错误:
用户缺少权限或找不到对象:REGEXP\u LIKE
我忘了申报什么东西了吗
非常感谢。您在自定义函数的定义中使用了原始函数
REGEXP\u LIKE
。因此,当HSQLDB尝试创建它时,它失败了,因为它正在寻找一个具有此名称的内置函数来将实现委托给它
HSQLDB的内置函数REGEXP_MATCHES
似乎与Oracle的REGEXP_类似
对应,因此这应该可以工作:
@Override
protected void registerFunctions() {
registerFunction(
"regexp_like",
new SQLFunctionTemplate(Hibernate.BOOLEAN, "regexp_matches(?1,?2)")
);
}
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)"));
}
}
@Override
protected void registerFunctions() {
registerFunction(
"regexp_like",
new SQLFunctionTemplate(Hibernate.BOOLEAN, "regexp_matches(?1,?2)")
);
}