hibernate 注册自定义函数

1.创建自己的方言
public class DialectRegExp extends Oracle9iDialect{
public DialectRegExp(){
super();

this.registerFunction("my_xy", new SQLFunctionTemplate(new IntegerType(),"get_sal(?1)"));

this.registerFunction("my_xy", new SQLFunctionTemplate(Hibernate.String,"get_ename(?1,?2)"));

}
}
?1代表第一个参数,?2代表第二个参数.详情见hibernate javadoc: 
 org.hibernate.dialect.Dialect,
org.hibernate.dialect.function.SQLFunction,


org.hibernate.dialect.function.SQLFunctionTemplate




2.主配置文件注册自己的方言
<property name="hibernate.dialect">org.xl.DialectRegExp</property>
注意:
<property name="hibernate.query.substitutions">true=1,false=false</property>
这句是为了某些情况在特殊使用,在文档中有解释,意思是是否在hibernate中用1表示true,0表示false


3.调用,此时的my_xy就是自定义函数get_sal
Query q = se.createQuery("select my_xy(e.empno) from Emp e");
List list = q.list();
System.out.println(list.size());




get_sal过程:
create or replace function get_sal(eno number) return number
 is
  mysal emp.sal%type;
 begin
  if validate_emp(eno) then
   select sal into mysal from emp where empno=eno;
   return mysal;
  end if;
 end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值