如何在spring hibernate中使用@NamedNativeQuery将参数传递给存储过程

时间:2014-07-12 15:13:40

标签: java spring hibernate stored-procedures

我有一个带有参数@id的过程,我也在spring hibernate中调用@NamedNativeQuery,我想知道如何在@NamedNativeQuery的查询属性中的过程中传递参数

我的代码看起来像这样。

@NamedNativeQuery(name =“Callmyprocedure”,query =“{CALL sampleprocedure:id}”,callable = true,resultClass = Subscriber.class)

其中id是我的过程参数,但它不起作用。

1 个答案:

答案 0 :(得分:3)

看看这个:

@Entity  
@NamedNativeQuery(name = "SampleNameQuery",query = "call spS_NamedQuery(?,?)",resultSetMapping="mapping",resultClass = NamedQuery.class)  
@SqlResultSetMapping(name="mapping",columns=@ColumnResult(name="value"))        
public class NamedQuery {  

 @Id  
 public String name;  

 @Column  
 public String value;  
}  
                . . . . 

你传递的参数如下:

 Transaction trx = null;  
  Session session = HibernateSessionFactory.getSession();  
  try {  
   trx = session.beginTransaction();  

   org.hibernate.Query query = session.getNamedQuery("SampleNameQuery");  
   query.setParameter(0,"fsdfsdf");         
   String value = "";  
   query.setParameter(1,value);         
   List objList = query.list();      
   trx.commit();  

我希望它对你有所帮助。