2010-12-29 2 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)? Я использую open jpa как поставщик jpa.

ответ

2

По this documentation вы должны смотреть на SQL0407, а это значит:

Нулевые значения не допускаются в колонке или переменной & 5.

Таким образом, на самом деле, вы пытаетесь поставить a NULL в столбце с недействительными значениями.

1

COLNO = 1 относится ко второму столбцу (empname). Вы должны проверить, является ли он пустым или нарушает уникальное ограничение.

+0

Я проверил его, его не null – akshay

+0

Я также уверен, что это doenot фиолетовое единственное ограничение, так как его набор firstfinding max id, а затем увеличил его. – akshay

+0

empname было null, так что оно давало ошибку.I resovle ошибка, установив некоторые значения по умолчанию значение для empname. – akshay