2010-12-29 5 views
1

객체를 지속시키기 위해 jpa를 사용하고 있습니다. 내가 다음과 같은 예외가 발생하면 유지하려고 할 때 :jpa를 사용하여 객체를 영속화 할 때의 문제

Create failure,Error occurred while create Chargebasis 
           <openjpa-1.2.2-SNAPSHOT-r422266:778978M-OPENJPA-975 fatal general error> org.apache.openjpa.persistence.PersistenceException: The transaction has been rolled back. See the nested exceptions for details on the errors that occurred. 
    at org.apache.openjpa.kernel.BrokerImpl.newFlushException(BrokerImpl.java:2163) 
    at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2010) 
    at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1908) 
    at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1679) 
    at org.apache.openjpa.kernel.DelegatingBroker.flush(DelegatingBroker.java:989) 
    at org.apache.openjpa.persistence.EntityManagerImpl.flush(EntityManagerImpl.java:592) 

    .... 

Caused by: <openjpa-1.2.2-SNAPSHOT-r422266:778978M-OPENJPA-975 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: DB2 SQL Error: SQLCODE=-407, SQLSTATE=23502, SQLERRMC=TBSPACEID=2, TABLEID=517, COLNO=1, DRIVER=3.50.152 
FailedObject: prepstmnt 154143024 INSERT INTO XYZ (empid, empname,CREATE_TS, UPDT_TS) VALUES (?, ?, ?, ?) [org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement] 
    at org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4245) 
    at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4210) 
    at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:504) 
    at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102) 
    at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:72) 
    at org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushBatch(BatchingPreparedStatementManagerImpl.java:195) 
    at org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:63) 
    .. 
Caused by: com.ibm.db2.jcc.b.lm: DB2 SQL Error: SQLCODE=-407, SQLSTATE=23502, SQLERRMC=TBSPACEID=2, TABLEID=517, COLNO=1, DRIVER=3.50.152 

empname 필드가 비어 있기 때문입니까? COLNO = 1은 첫 번째 (empid) 또는 두 번째 열 (empname)을 참조합니까? jpa provider로 open jpa를 사용하고 있습니다.

답변

2

this documentation에 따르면 당신은 SQL0407보고해야하고 그것은 의미 :

널 값이 칼럼에서 허용 또는 & 5.

그래서

변수없는, 참으로, 당신은 넣어 위해 노력하고 a nullable 열의 NULL

1

COLNO = 1은 두 번째 열 (empname)과 관련이 있습니다. 비어 있는지 확인하거나 고유 제한 조건을 위반해야합니다.

+0

나는 그것을 체크했다 – akshay

+0

나는 그것이 최대 우선 id를 설정하고 최대 값을 0으로 설정하고 그 값을 증가시키지 않는다는 것을 확신한다. – akshay

+0

empname이 null이기 때문에 오류가 발생했다. 일부 기본값을 설정하여 오류를 다시 검색한다. 값을 empname으로 지정하십시오. – akshay

관련 문제