孙卫琴的《精通JPA与Hibernate》的读书笔记: 通过JPA API调用存储过程

以下SQL代码定义了一个名为findCustomers的存储过程,p_age为输入参数,p_count为输出参数:

delimiter  //
create procedure findCustomers(in p_age integer,out p_count integer)
begin
select count(*) into p_count from CUSTOMERS where AGE>p_age;
select name from CUSTOMERS;
end  //

JPA API中的StoredProcedureQuery接口能够调用存储过程,并且还能设置输入参数,以及读取输出参数:

StoredProcedureQuery query=entityManager
           .createStoredProcedureQuery("findCustomers");

//注册参数
query.registerStoredProcedureParameter(1,
                           Integer.class,ParameterMode.IN);
query.registerStoredProcedureParameter(2,
                           Integer.class,ParameterMode.OUT);
int age=15;
query.setParameter(1,age); //设置参数
List names=query.getResultList();  //调用存储过程

for(Object name:names)  //遍历查询结果
  System.out.println((String)name);

//读取输出参数
System.out.println("年龄大于"+age+"的客户数目:"
          +(Integer)query.getOutputParameterValue(2));

孙卫琴的《精通JPA与Hibernate》的读书笔记: 通过JPA API调用存储过程

上一篇:孙卫琴的《精通JPA与Hibernate》的读书笔记:用@ManyToMany注解映射双向关联


下一篇:Hibernate 缓存机制