2013-06-05 24 views
1

有,指出在日誌中的錯誤:的Oracle 11g +休眠 - > ORA-01461:只能爲插入件結合的LONG值到LONG柱

ORA-01461:可結合的LONG值僅用於插入長列

真的沒有其他有用的信息。我試圖跟進代碼,google-d的問題,我想我可能已經找到了問題,但不幸的是我沒有Oracle數據庫或任何其他東西(即使代碼不存在於我,我正在寫這一切都從記憶和注意事項:() 所以我可以猜測基礎上的代碼(和大量的谷歌搜索的)的唯一事情是字符串映射爲VARCHAR2 一些環境信息:

Hibernate: 3.2.1.ga 
Driver: ojdbc6-11.2.0.2.0.jar 
Database: 11.2.0.2.0 - 64bit 

表有多個varchar2(300字節)和一個varchar2(4000字節),可以調用最後一個TEXT。我檢查了實體,在它的列註釋中,這些字段對它的值有300字節限制,即使是TEXT(4000字節)字段!所以這是一個奇怪的觀點,我瘋狂的猜測是一個字符串出現了,大於300 BYTE,這是當試圖持久化(代碼試圖持久化該實體的實例的堆棧跟蹤點)時打印到日誌中的錯誤。可悲的是我只是有一個日誌去.. :(是我的猜想可能或它的將是別的東西

這裏的實體領域:??

@Column(name = "TEXT", nullable = false, length = varcharLength) 
public String getText() { 
    return text; 
} 

下面是創建語句(基本反正部分):

CREATE TABLE "TABLENAME" 
    (
    "ID" VARCHAR2(300 BYTE) NOT NULL ENABLE, 
    "VERSION" NUMBER(10,0), 
    "TEXT" VARCHAR2(4000 BYTE) NOT NULL ENABLE, 
    "PUBLISH_DATE" DATE NOT NULL ENABLE, 
    PRIMARY KEY ("ID") 
    ); 

(和表上PUBLISH_DATE索引,如果是相關的話)

+0

向我們展示表的CREATE TABLE語句。 –

+0

我將create table語句添加到問題中。 – Revolit

+0

聽起來像是一個Hibernate bug /問題。你使用正確的休眠方言嗎? –

回答

3

所以,它是與更大的字符串問題,那麼4000個字節我們改變了合作。 lumn到CLOB,這應該解決它。如果字符文字小於4000字節,它仍然存儲在Oracle中,就好像它是varchar2(4000)一樣。

相關問題