這是我的問題,我必須使用一個大的SP,並且沒有時間在java中重寫。 所以我使用Hibernate標準,我不知道我是否可以調用它。謝謝大家。我可以使用休眠條件調用存儲過程嗎?
7
A
回答
5
請參閱參考文檔中的Using stored procedures for querying。
映射查詢是這樣調用的。
List employment = sess.getNamedQuery("BigSP")
.list();
映射查詢可以返回實體。
<sql-query name="BigSP" callable="true">
<return alias="emp" class="Employment">
<return-property name="employee" column="EMPLOYEE"/>
<return-property name="employer" column="EMPLOYER"/>
<return-property name="startDate" column="STARTDATE"/>
<return-property name="endDate" column="ENDDATE"/>
<return-property name="regionCode" column="REGIONCODE"/>
<return-property name="id" column="EID"/>
<return-property name="salary">
<return-column name="VALUE"/>
<return-column name="CURRENCY"/>
</return-property>
</return>
{ call BigSP }
</sql-query>
2
This document描述瞭如何映射作爲本機查詢執行的存儲過程的結果。
你不能用Criteria API來做,但這不應該。
5
不,您需要使用本機查詢。如果您使用註釋,請參見2.3.2. Mapping native queries。
下面的例子:
@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;
}
}
+0
謝謝Thivent,但我們不使用annoations :( – Gaston 2010-03-26 15:52:15
+0
@Gaston然後請參閱Lachlan的答案。 – 2010-03-26 15:53:49
相關問題
- 1. 使用JPA(休眠)VS存儲過程
- 2. 我可以使用JavaBeans與休眠嗎?
- 3. 如何使用休眠調用存儲過程?
- 4. 休眠和存儲過程
- 5. 我們可以從另一個存儲過程調用存儲過程嗎?
- 6. 我們可以從函數調用存儲過程嗎?
- 7. 在休眠中調用存儲過程的錯誤
- 8. SQLException 00604&01003從休眠調用存儲過程命名查詢
- 9. 如何從休眠調用MySQL存儲過程
- 10. 是否可以從休眠動態添加存儲過程?
- 11. 使用存儲過程保存休眠對象
- 12. 在休眠調用存儲函數
- 13. 從休眠調用Oracle存儲功能
- 14. 是否可以調用存儲過程?
- 15. 休眠安全理解:休眠與存儲過程
- 16. MySQL:存儲過程可以調用Java程序嗎?
- 17. Oracle存儲過程和休眠
- 18. 休眠答Oracle存儲過程
- 19. 休眠存儲過程訪問
- 20. 休眠和MySQL,導入存儲過程
- 21. 休眠與MS SQL存儲過程
- 22. 休眠存儲過程結果
- 23. 堅持SQL Server 2008使用存儲過程,JPA和休眠
- 24. 我們可以在休眠中使用union嗎?
- 25. 在SQL Server中可以遞歸調用存儲過程嗎?
- 26. 您可以在Select中多次調用Netezza存儲過程嗎?
- 27. MySQL存儲過程:我可以直接用光標更新嗎?
- 28. 我可以將SQL用戶限制爲僅存儲過程嗎?
- 29. 我可以在存儲過程的視圖中引用表嗎?
- 30. 是否可以在LINQPad中使用LINQ調用存儲過程?
Hibernate也允許你執行數據庫直接調用。你也可以這樣做。 – 2010-03-25 13:21:33
謝謝你的答案,但我該怎麼做? – Gaston 2010-03-26 15:49:43