我可以用hibernate标准调用存储过程吗?

这是我的问题,我必须使用一个大的SP,并且没有时间在java中重写。 所以我正在使用Hibernate标准,我不知道我是否可以调用它。 谢谢大家。

请参阅参考文档中的使用存储过程进行查询 。

映射查询就像这样调用。

List employment = sess.getNamedQuery("BigSP") .list(); 

映射查询可以返回实体。

              { call BigSP }  

不,您需要使用本机查询。 如果您使用的是注释,请参阅2.3.2。 映射本机查询 。

下面是一个例子:

 @Entity @NamedNativeQuery( name="baz", query="call fooProc(:bar, :i)", callable=true, readOnly=true, resultClass=Foo.class ) public class Foo { private Date when; //... } 

并称之为:

 @Stateless public class FooBean implements FooLocal { @PersistenceContext EntityManager em; public Foo getAFoo(string bar, int i) { Foo result = (Foo)em.createNamedQuery("baz").setParameter("bar", bar).setParameter("i", i).getSingleResult(); return result; } } 

本文档描述了如何映射作为本机查询执行的存储过程的结果。

您无法使用Criteria API执行此操作,但这无关紧要。