java hibernate调用存储过程_java – 如何在Hibernate中调用存储过程?

4.1中不支持您正在尝试的内容(INOUT / OUT参数处理).通过4.1 Hibernate的可调用语句支持侧重于ResultSet返回.支持您在上游主服务器上已经尝试的内容,并且将成为Hibernate的下一个主要版本(将是4.2或5.0)的一部分;在那里,调用函数/过程现在是一流的操作.

目前,您必须直接使用JDBC或从master构建Hibernate并使用该新支持.如果你选择后者,它看起来像:

StoredProcedureCall call = session.createStoredProcedureCall( "GET_VENDOR_STATUS_COUNT" )

.registerStoredProcedureParameter( "DOCUMENT_ID",Long.class,ParameterMode.IN )

.registerStoredProcedureParameter( "NOT_INVITED",String.class,ParameterMode.OUT )

...;

call.getRegisteredParameter( "DOCUMENT_ID" ).bindValue( theDocumentId );

StoredProcedureOutputs outputs = call.getOutputs();

String notInvited = (String) outputs.getOutputParameterValue( "NOT_INVITED" );

...

该代码仍然很年轻,可能会改变.例如,当我更频繁地编写这些示例时,我认为registerStoredProcedureParameter应该重命名为registerParameter或declareParameter,并且它应该返回声明/注册的类型表示;就像是:

interface RegisteredParameter {

Class getParameterType();

// only valid for IN or INOUT params

void bindValue(T value);

}

RegisteredParameter registerParameter(String name,Class type,ParameterMode mode);

然后允许:

StoredProcedureCall call = session.createStoredProcedureCall( "GET_VENDOR_STATUS_COUNT" )

call.registerParameter( "DOCUMENT_ID",ParameterMode.IN ).bindValue( theDocumentId );

RegisteredParameter notInvitedParam = call.registerParameter( "NOT_INVITED",ParameterMode.OUT );

...

String notInvited = outputs.getOutputParameterValue( notInvitedParam );

作为一个额外的好处,人们尽早尝试这一点可以帮助塑造它在发布之前的样子(此时它更难改变).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值