проблема в сохранении объекта с помощью jpa - PullRequest
1 голос
/ 29 декабря 2010

Я использую 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 ]

2 голосов
/ 29 декабря 2010

Согласно этой документации вам нужно взглянуть на SQL0407, и это означает:

В столбце или переменной недопустимы нулевые значения & 5.

Итак, действительно, вы пытаетесь поместить NULL в необнуляемый столбец.

1 голос
/ 29 декабря 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...