2014-01-09 80 views
1

我執行休眠Criteria.list()並得到錯誤錯誤:休眠Criteria.list()發出 「ORA-01401:插入的值太大,列」

ORA-01401: inserted value too large for column.

編輯:

真的問題出在Oracle上。在現有數據庫的Oracle的參數,有一個NLS_SORT是這樣工作的:

NLS_SORT=WEST_EUROPEAN; //limits the clause 'order by' for a column that not exceed 999 characters 

NLS_SORT=BINARY; //accepts values greater than 999 characters on the clause 'order by' 

我經過這幷包含在條款「訂單超過999個字符列」。有關更多信息,請單擊link1link2

回答

0

Hibernate的會話就像一個緩存,只有在最後一刻或會話刷新時,實體寫入纔會持久保存到數據庫。

我的猜測是,list()觸發器從一些先前修改的實體插入或更新到數據庫中。它這樣做是因爲Hibernate需要保證list()永遠不會返回失效或不正確的數據。

Log the queries Hibernate generateshibernate.show_sql + hibernate.format_sql)並查看在錯誤發生之前執行了哪些特定語句。