不幸的是,如果您想
function在
Select语句中使用自定义调用的JPA 2.1功能,那么您将需要执行一些其他操作才能使用它。
当您在
where语句中使用它时,它无需任何其他操作即可工作,但是由于我想像您一样将它用于select内的我的一个项目,因此您需要:
1) 扩展hibernate方言并注册您的功能:
package com.mypkg.dialect;import org.hibernate.dialect.Oracle10gDialect;import org.hibernate.dialect.function.StandardSQLFunction;import org.hibernate.type.StringType;public class CustomOracle10gDialect extends Oracle10gDialect { public CustomOracle10gDialect() { super(); registerFunction("my_function", new StandardSQLFunction("my_function", new StringType())); }}2) 编辑
hibernate.dialect会话工厂的属性,以指向该自定义实现:
<property name="hibernate.dialect" value="com.mypkg.dialect.CustomOracle10gDialect"/>
更新资料
如果需要从某个模式调用该函数,则建议这样做:
registerFunction("my_function", new StandardSQLFunction("schema.my_function", new StringType()));进一步阅读-> 本机函数调用



