2012-11-08 43 views
3

使用spring和hibernate開發一個web應用程序時,我得到以下的execption。序列不存在

值java.sql.SQLException:ORA-02289:序列不存在

雖然我試圖將數據插入表我是usign順序遞增REQUEST_ID的價值。

我使用下面的代碼插入

@Override 
public void postRequest(RequestInfo requestInfo) 
{ 
Session session = null; 
Transaction trans = null; 
SessionFactory sessionFactory = null; 

sessionFactory=HibernateConfig.getSessionFactory(); 
session= sessionFactory.openSession(); 
trans = session.beginTransaction(); 
session.save(requestInfo); 
trans.commit(); 
session.close(); 

} 
public class HibernateConfig 
{ 
public static SessionFactory sessionFactory; 
public static SessionFactory getSessionFactory() 
{ 
sessionFactory = new Configuration().configure().buildSessionFactory(); 
return sessionFactory; 
} 
} 

在Hibernate映射我已經提到這樣

<id name="requestId" type="int" column="request_id" > 
<generator class="sequence"> 
<param name="sequence">REQUEST_INFO_SEQ</param> 
</generator> 
</id> 

我與本地也試過,但我無法得到的值是獲得插入。

我使用的是oracle 11g。

任何一個可以給我這個解決方案。

+0

檢查您是否連接到正確的數據庫(如果您有多個數據庫)並檢查數據庫中是否存在該表的序列。可能會出現一些Typo錯誤 –

+0

[Error:ORA-02289(2:10):PL/SQL:ORA-02289](http://stackoverflow.com/questions/9077897/error-ora-02289-2) -10-pl-sql-ora-02289) – APC

回答

2

序列是否存在?要檢查,做到:

select * from all_sequences where sequence_name = 'REQUEST_INFO_SEQ' 
+1

嘗試將其作爲**應用程序正在使用的相同用戶**來執行。可能是版權問題(授權選擇序列) – Friso

0

我覺得有什麼不對的POJO對象參數正在添加,您應該創建會話首先做3兩件事,使得POJO對象(瞬態)然後調用持久的方法保存,更新,刪除(Persistent State)和trx.commit(分離狀態的hibernate對象)。並且應該在try catch塊中完成這項工作並捕獲HibernateException,然後調用finally來關閉會話,並使用buildSessionFactory(); ()。配置()。buildSessionFactory();配置()。

5

在爲hbm.xml文件中的架構名稱提供序號名稱(如schemaName.sequenceName)之後,插入操作正常工作。 謝謝大家迴應查詢。

+0

我在註釋中添加了同樣的問題。我嘗試使用'schema'屬性,但沒有成功......當我嘗試使用'sequenceName = SCHEMA.SEQUENCENAME'時,一切都很順利! – bryce

+0

感謝您的指針..最後我添加它作爲同義詞來訪問它沒有schemaName限定符。 – airboss