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

Posted

技术标签:

【中文标题】如何在spring hibernate中使用@NamedNativeQuery将参数传递给存储过程【英文标题】:how to pass parameters to a stored procedure using @NamedNativeQuery in spring hibernate 【发布时间】:2014-07-12 15:13:39 【问题描述】:

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

我的代码如下所示。

@NamedNativeQuery(name = "Callmyprocedure", query="CALL sampleprocedure :id", callable =true, resultClass = Subscriber.class)

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

【问题讨论】:

【参考方案1】:

看看这个:

@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();  

希望对你有帮助。

【讨论】:

以上是关于如何在spring hibernate中使用@NamedNativeQuery将参数传递给存储过程的主要内容,如果未能解决你的问题,请参考以下文章

如何使用注解在 Hibernate 4 和 Spring 中定义不同类型的关系?

如何在 Spring Boot 中使用 Hibernate/JPA 返回多级 json

如何使用 Hibernate 在 Spring Boot 中处理数据库迁移?

如何在 Spring Boot 应用程序中使用 Hibernate 验证进行 Bean 验证?

如何在 Hibernate、Spring、JSP 中从 db 中获取多行?

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