Java 创建具有相同名称但不具有相同签名的别名
为了在Junit测试中使用H2数据库而不是调用Oracle,我在H2上创建别名以模拟Oracle兼容性时遇到了障碍:Java 创建具有相同名称但不具有相同签名的别名,java,h2,Java,H2,为了在Junit测试中使用H2数据库而不是调用Oracle,我在H2上创建别名以模拟Oracle兼容性时遇到了障碍: 我首先声明了日期到字符转换的to_char的别名:works fine create alias TO_CHAR as$$java.lang.String toChar(java.util.Date,String格式)引发异常{…}$$ 然后我尝试为数字到字符转换声明一个to_char别名:现在h2不接受它: 将别名创建为\u CHAR as$$ java.lang.Strin
- 我首先声明了日期到字符转换的to_char的别名:works fine
create alias TO_CHAR as$$java.lang.String toChar(java.util.Date,String格式)引发异常{…}$$代码>
- 然后我尝试为数字到字符转换声明一个to_char别名:现在h2不接受它:
将别名创建为\u CHAR as$$ java.lang.String toChar(java.lang.Number值){ ... }$$;代码>
CREATE ALIAS YOUR_METHOD FOR "acme.Function.yourMethod";
该限制记录如下:
CREATE ALIAS YOUR_METHOD FOR "acme.Function.yourMethod";
方法重载
如果类已经编译并包含在类路径中,则可以将多个方法绑定到SQL函数。每个Java方法必须有不同数量的参数。将函数声明为源代码时不支持方法重载。“多个方法可能绑定到一个SQL函数”,因此我希望为“acme.function.yourMethod”、“acme.function.yourMethodOverload1”创建ALIAS YOUR_方法;Java支持方法重载,所以我认为您不需要传递两个Java方法。也许最好问一个新问题。在java中,可以使用相同数量的参数重载,例如
foo(inta,intb)
和foo(stringa,stringb)
。H2似乎不支持这一点,也不支持foo(对象a、对象b)
。但是,H2确实有一个可用于此目的的“值”类。