Sql server 2008 使用JPA/Hibernate的存储过程的结果
我试图通过在EJB无状态会话bean中使用Hibernate从存储过程中检索结果 存储过程正在MS SQL Server 2008上运行,并将一个整数作为参数,然后返回另一个整数 我设法使用Sql server 2008 使用JPA/Hibernate的存储过程的结果,sql-server-2008,hibernate,stored-procedures,jpa,ejb,Sql Server 2008,Hibernate,Stored Procedures,Jpa,Ejb,我试图通过在EJB无状态会话bean中使用Hibernate从存储过程中检索结果 存储过程正在MS SQL Server 2008上运行,并将一个整数作为参数,然后返回另一个整数 我设法使用 Query q = em.createNativeQuery("name_of_my_procedure :param"); q.setParameter("param", sequence); q.executeUpdate(). 使用getResultList或getSingleResult而不是ex
Query q = em.createNativeQuery("name_of_my_procedure :param");
q.setParameter("param", sequence);
q.executeUpdate().
使用getResultList或getSingleResult而不是executeUpdate,总是会导致一个有趣的异常
在EJB3.0中,我发现:
JPA不支持存储过程,您必须依赖持久性提供程序的专有功能
我发现有几篇文章谈到通过SQL连接使用CallableStatement,但这个解决方案看起来非常不合适
有没有办法使用Hibernate检索我生成的id
多谢各位
Fred.这不是对您问题的回答,但仅供参考,JPA 2.1支持(或将在发布时支持)a。唯一提供此AFAIK的JPA实现是DataNucleus JPA。最终,我使用另一个存储过程修复了它 我创建了一个新的存储过程来调用另一个存储过程,并将结果存储在一个临时表中。 我在这个临时表上映射了一个实体,现在可以检索我需要的信息了
我知道这不是最优雅的方式,但我不想将SQL连接代码与JPA代码混合使用。我已经看过了:它看起来很有趣,符合我的需要,但同时我需要一个使用JPA 2.0的解决方案。TopLink呢?它不也支持对存储过程的调用吗?如果你能用函数代替存储过程,那就很简单了。你能吗?