2012-01-16 59 views
2

我使用的是帶有Weblogic 8服務器的Oracle 9.2。我從表中獲取數據,然後再次將數據更新到同一個表中。正在獲取Java.sql.SQLException:ORA-01461:只能綁定LONG值才能插入到LONG列中。插入數據時

我收到錯誤

值java.sql.SQLException:ORA-01461:只能用於插入結合long值轉換爲一個LONG列。

該列爲varchar2(4000字節)類型。

有人能告訴我爲什麼會出現這個錯誤嗎?如果您喜歡其他信息,請告訴我。下面是我的SQL查詢:

/** 
* @jc:sql statement:: 
* UPDATE CORRECTIVE_ACTION SET 
*  CA_ID = {dt.caId}, 
*  CA_NBR = {dt.caNbr}, 
*  CAPA_PLAN_ID = {dt.capaPlanId}, 
*  OBJ_EVIDENCE_COMP = {dt.objEvidenceComp}, 
*  APPLICABLE_ELSE_WHERE = {dt.applicableElseWhere}, 
*  JUSTIFICATION = {dt.justification}, 
*  MOE = {dt.moe}, 
*  COMPLETION_DATE = {dt.completionDate}, 
*  EXTENSION_DUE_DATE = {dt.extensionDueDate}, 
*  STATUS_CD = {dt.statusCd}, 
*  SYSTEM_STATUS_CD = {dt.systemStatusCd}, 
*  ROOT_CAUSE_CD = {dt.rootCauseCd}, 
*  DESCRIPTION = {dt.description}, 
*  CA_TYPE = {dt.caType}, 
*  CREATED_BY = {dt.createdBy}, 
*  CREATED_DATE = {dt.createdDate}, 
*  MODIFIED_BY = {dt.modifiedBy}, 
*  MODIFIED_DATE = {dt.modifiedDate}, 
*  COMPLETION_DUE_DATE = {dt.completionDueDate} 
* WHERE CA_ID = {dt.caId} 
* :: 
*/ 
void updateCorrectiveAction(CorrectiveActionDT dt) throws SQLException; 
+1

請過去你的sql查詢,因爲你得到的錯誤... – 2012-01-16 13:28:33

+2

也搜索'Java.sql.SQLException:ORA-01461:可以綁定一個LONG'在stackoverflow本身..有很多答案...有些人可能會幫助您 – 2012-01-16 13:29:12

+0

我已通過在數據源的服務器屬性中添加「oracle.jdbc.RetainV9LongBindBehavior = true」來解決此問題。 – Bharat 2012-01-19 09:30:17

回答

1

我通過在數據源的服務器屬性中添加了oracle.jdbc.RetainV9LongBindBehavior=true來解決此問題。

2

下面的鏈接可以幫助你......

CHAR semantics and ORA-01461

也嘗試搜索上Stackoverflow你的問題,你會得到答案......

+0

我已通過在數據源的服務器屬性中添加「oracle.jdbc.RetainV9LongBindBehavior = true」來解決此問題。 – Bharat 2012-01-19 09:30:26

+0

很棒......乾杯 – 2012-01-19 11:10:02

0

如果您使用hibernate並嘗試插入大於4000個字符的字符串,則可能會將其解釋爲LONG而不是插入時的VARCHAR2。 添加子固定它爲我們

entity.setColVal(colVal == null||colVal.length() < 4000 ? colVal : colVal.substring(0,4000)); 

或者你可以使用StringUtils.substring(colVal, 0, 4000);如果你想不用做零和長度檢查自己。

相關問題