Hi Mike! Thanks for the quick andwer, at the botton is part of the log file

The problem seems to be that it try to execute this query

INSERT INTO WWBPSM.OUTBOUND_FILES (OUTBOUND_FILE_ROW_ID, FILE_TYPE, 
        STATUS, REPORT_ROW_ID) 
    VALUES (?, ?, ?, ?) 

and not :

INSERT INTO WWBPSM.OUTBOUND_FILES (OUTBOUND_FILE_ROW_ID, FILE_TYPE, 
        STATUS, REPORT_ROW_ID, FILE) 
    VALUES (?, ?, ?, ?, ?) 

the query being  executed is not inserting the file field that is a Blob ,
it is required not to be null, that's why it is logging "Assignment of a
NULL value to a NOT NULL column"

public class OutboundFiles implements java.io.Serializable {
        private int outboundFileRowId;
        private Reports reports;
        private Blob file;
        private String fileType;
        private String status;

        public OutboundFiles(Reports reports, Blob file,  
                        String fileType, String status) {
                this.reports = reports;
                this.file = file;
                this.fileType = fileType;
                this.status = status;
        }

        @Column(name = "FILE", nullable = false)
        public Blob getFile() {
                return this.file;
        }
}

that I set the blog in the Main with

        Blob file = null;
        try {
                file = new SerialBlob("PEPE".getBytes());
        } catch (SQLException e) {}
        OutboundFiles outboundFiles = new OutboundFiles(report, file,
"Type","Status");

It seems that the problem could be in the mapping, as it seems that is not
creating a mapping for the "file field", as you can see in the log below


Do you know how to fix this?

Thank in advance!

- Horacio



PART OF THE LOG FILE

33171  ReportAndPay  TRACE  [main] openjpa.MetaData - Resolving mapping for
"com.ibm.gatewayservices.model.outboundfi...@712125042".
33171  ReportAndPay  TRACE  [main] openjpa.MetaData -
"com.ibm.gatewayservices.model.OutboundFiles" has mapping strategy "full".
33171  ReportAndPay  TRACE  [main] openjpa.MetaData - Initializing mapping
for "com.ibm.gatewayservices.model.outboundfi...@712125042".
33171  ReportAndPay  TRACE  [main] openjpa.MetaData -   Resolving field
"[email protected]".
33171  ReportAndPay  TRACE  [main] openjpa.MetaData -   Resolving field
"com.ibm.gatewayservices.model.outboundfi...@712125042.outboundfilerowid".
33171  ReportAndPay  TRACE  [main] openjpa.MetaData -   Resolving field
"[email protected]".
33171  ReportAndPay  TRACE  [main] openjpa.MetaData -   Resolving field
"[email protected]".

49609  ReportAndPay  TRACE  [main] openjpa.jdbc.SQL - <t 1090273532, conn
232787424> executing prepstmnt 1157514494 
INSERT INTO WWBPSM.OUTBOUND_FILES (OUTBOUND_FILE_ROW_ID, FILE_TYPE, 
        STATUS, REPORT_ROW_ID) 
    VALUES (?, ?, ?, ?) 
[params=(int) 843, (String) Type, (String) Status, (int) 2001]
49625  ReportAndPay  TRACE  [main] openjpa.jdbc.SQL - <t 1090273532, conn
232787424> [16 ms] spent
49640  ReportAndPay  TRACE  [main] openjpa.Runtime - An exception occurred
while ending the transaction.  This exception will be re-thrown.
<openjpa-1.2.0-r422266:683325 fatal store error>
org.apache.openjpa.util.StoreException: 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.beforeCompletion(BrokerImpl.java:1826)
        at
org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81)
        at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1350)
        at
org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:877)
        at
org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:512)
        at com.ibm.gatewayservices.test.Main.main(Main.java:45)
Caused by: <openjpa-1.2.0-r422266:683325 nonfatal store error>
org.apache.openjpa.util.StoreException: [IBM][CLI Driver][DB2/NT] SQL0407N 
Assignment of a NULL value to a NOT NULL column "TBSPACEID=2, TABLEID=263,
COLNO=2" is not allowed.  SQLSTATE=23502

FailedObject: prepstmnt 1157514494 
INSERT INTO WWBPSM.OUTBOUND_FILES (OUTBOUND_FILE_ROW_ID, FILE_TYPE, 
        STATUS, REPORT_ROW_ID) 
    VALUES (?, ?, ?, ?) 
 [org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement]
        at 
org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4238)
        at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4203)
        at
org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:503)
        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)
        at
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:89)
        at
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:72)
        at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:655)
        at
org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
        ... 8 more
Caused by: COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2/NT] SQL0407N 
Assignment of a NULL value to a NOT NULL column "TBSPACEID=2, TABLEID=263,
COLNO=2" is not allowed.  SQLSTATE=23502

        at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(Unknown
Source)
        at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(Unknown
Source)
        at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.check_return_code(Unknown
Source)
        at COM.ibm.db2.jdbc.app.DB2PreparedStatement.execute2(Unknown Source)
        at COM.ibm.db2.jdbc.app.DB2PreparedStatement.executeUpdate(Unknown 
Source)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
        at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
        at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:864)
        at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
        at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeUpdate(JDBCStoreManager.java:1504)
        at
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.executeUpdate(PreparedStatementManagerImpl.java:151)
        at
org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushSingleRow(BatchingPreparedStatementManagerImpl.java:217)
        at
org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushBatch(BatchingPreparedStatementManagerImpl.java:156)
        ... 13 more
49640  ReportAndPay  TRACE  [main] openjpa.jdbc.JDBC - <t 1090273532, conn
232787424> [0 ms] rollback
49640  ReportAndPay  TRACE  [main] openjpa.jdbc.JDBC - <t 1090273532, conn
0> [0 ms] close
49671  ReportAndPay  TRACE  [main] openjpa.Runtime - An exception occurred
while ending the transaction.  This exception will be re-thrown.
<openjpa-1.2.0-r422266:683325 fatal store error>
org.apache.openjpa.util.StoreException: 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.beforeCompletion(BrokerImpl.java:1826)
        at
org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81)
        at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1350)
        at
org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:877)
        at
org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:512)
        at com.ibm.gatewayservices.test.Main.main(Main.java:45)
Caused by: <openjpa-1.2.0-r422266:683325 nonfatal store error>
org.apache.openjpa.util.StoreException: [IBM][CLI Driver][DB2/NT] SQL0407N 
Assignment of a NULL value to a NOT NULL column "TBSPACEID=2, TABLEID=263,
COLNO=2" is not allowed.  SQLSTATE=23502

FailedObject: prepstmnt 1157514494 
INSERT INTO WWBPSM.OUTBOUND_FILES (OUTBOUND_FILE_ROW_ID, FILE_TYPE, 
        STATUS, REPORT_ROW_ID) 
    VALUES (?, ?, ?, ?) 
 [org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement]
        at 
org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4238)
        at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4203)
        at
org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:503)
        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)
        at
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:89)
        at
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:72)
        at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:655)
        at
org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
        ... 8 more
Caused by: COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2/NT] SQL0407N 
Assignment of a NULL value to a NOT NULL column "TBSPACEID=2, TABLEID=263,
COLNO=2" is not allowed.  SQLSTATE=23502

        at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(Unknown
Source)
        at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(Unknown
Source)
        at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.check_return_code(Unknown
Source)
        at COM.ibm.db2.jdbc.app.DB2PreparedStatement.execute2(Unknown Source)
        at COM.ibm.db2.jdbc.app.DB2PreparedStatement.executeUpdate(Unknown 
Source)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
        at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
        at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:864)
        at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
        at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeUpdate(JDBCStoreManager.java:1504)
        at
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.executeUpdate(PreparedStatementManagerImpl.java:151)
        at
org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushSingleRow(BatchingPreparedStatementManagerImpl.java:217)
        at
org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushBatch(BatchingPreparedStatementManagerImpl.java:156)
        ... 13 more

Michael Dick wrote:
> 
> Hi Hantone,
> 
> Could you post the nested exception from inside the RollbackException?
> There
> should be a SQLException as the innermost nested exception that will shed
> some light on the problem.
> 
> Thanks,
> 
> -mike
> 
> On Tue, Jan 27, 2009 at 11:16 AM, hantone
> <[email protected]>wrote:
> 
>>
>> Thanks in advance! I'm having a hard time with this so I would really
>> appreciate your help!
>>
>> I'm having problems to commit a transaction
>>
>> public class Main {
>>        public static void main(String[] args) {
>>                try {
>>                        EntityManager entityManager =
>>
>> Persistence.createEntityManagerFactory("ReportAndPay").createEntityManager();;
>>                        EntityTransaction transaction =
>> entityManager.getTransaction();
>>                        transaction.begin();
>>                        Reports report = entityManager.find(Reports.class,
>> new Inhteger(2001));
>>                        Blob file = null;
>>                        try {
>>                                file = new SerialBlob("PEPE".getBytes());
>>                        } catch (SQLException e) {}
>>                        report.getOutboundFileses().add(new
>> OutboundFiles(report, file ,
>> "Type","Status"));
>>                        entityManager.merge(report);
>>                        transaction.commit();
>>                        entityManager.close();
>>                } catch(RuntimeException rte) {
>>                        System.out.println(rte.getStackTrace());
>>                }
>>        }
>> }
>>
>> When I debug it, an exception happened when executing
>> "transaction.commit();", I get this error message
>> "The transaction has been rolled back.  See the nested exceptions for
>> details on the errors that occurred.", the error cause is
>> <openjpa-1.2.0-r422266:683325 fatal store error>
>> org.apache.openjpa.persistence.RollbackException: The transaction has
>> been
>> rolled back.  See the nested exceptions for details on the errors that
>> occurred.
>>
>>
>>
>> @Entity
>> @Table(name = "REPORTS", schema = "MYPROY")
>> @SequenceGenerator(name="ReportsSeq",
>> sequenceName="MYPRO.REPORT_ROW_ID_SEQ1", initialValue=1,
>> allocationSize=1)
>> public class Reports implements java.io.Serializable {
>>        private int reportRowId;
>>        private String status;
>>        private Date created;
>>        private Set<OutboundFiles> outboundFileses = new
>> HashSet<OutboundFiles>(0);
>>        ...
>>
>>        @Id
>>        @Column(name = "REPORT_ROW_ID", unique = true, nullable = false)
>>        @GeneratedValue(strategy=GenerationType.SEQUENCE,
>> generator="ReportsSeq")
>>        public int getReportRowId() {
>>                return this.reportRowId;
>>        }
>>
>>        @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY,
>> mappedBy =
>> "reports")
>>        public Set<OutboundFiles> getOutboundFileses() {
>>                return this.outboundFileses;
>>        }
>> }
>>
>>
>>
>>
>> @Entity
>> @Table(name = "OUTBOUND_FILES", schema = "MYPROY")
>> @SequenceGenerator(name="OutboundFilesSeq",
>> sequenceName="WWBPSM.OUTBOUND_FILE_ROW_ID_SEQ1", initialValue=1,
>> allocationSize=1)
>> public class OutboundFiles implements java.io.Serializable {
>>        private int outboundFileRowId;
>>        private Reports reports;
>>        private Blob file;
>>        private String fileType;
>>        private String status;
>>
>>        public OutboundFiles() {
>>        }
>>
>>        public OutboundFiles(int outboundFileRowId, Reports reports, Blob
>> file,
>>                        String fileType) {
>>                this.outboundFileRowId = outboundFileRowId;
>>                this.reports = reports;
>>                this.file = file;
>>                this.fileType = fileType;
>>        }
>>        public OutboundFiles(Reports reports, Blob file,String fileType,
>> String
>> status) {
>>                this.reports = reports;
>>                this.file = file;
>>                this.fileType = fileType;
>>                this.status = status;
>>        }
>>        @Id
>>        @Column(name = "OUTBOUND_FILE_ROW_ID", unique = true, nullable =
>> false)
>>        @GeneratedValue(strategy=GenerationType.SEQUENCE,
>> generator="OutboundFilesSeq")
>>        public int getOutboundFileRowId() {
>>                return this.outboundFileRowId;
>>        }
>> }
>>
>> the same error happens as well if I use
>>
>> public class Main {
>>        public static void main(String[] args) {
>>                try {
>>                        EntityManager entityManager =
>>
>> Persistence.createEntityManagerFactory("ReportAndPay").createEntityManager();;
>>                        EntityTransaction transaction =
>> entityManager.getTransaction();
>>                        transaction.begin();
>>                        Reports report = entityManager.find(Reports.class,
>> new Integer(2001));
>>                        Blob file = null;
>>                        try {
>>                                file = new SerialBlob("PEPE".getBytes());
>>                        } catch (SQLException e) {}
>>                        OutboundFiles outboundFiles = new
>> OutboundFiles(report, file ,
>> "Type","Status");
>>                        entityManager.persist(outboundFiles);
>>                        transaction.commit();
>>                        entityManager.close();
>>                } catch(RuntimeException rte) {
>>                        System.out.println(rte.getMessage());
>>                }
>>        }
>> }
>>
>>
>> --
>> View this message in context:
>> http://n2.nabble.com/Nested-Exception-Error-tp2226964p2226964.html
>> Sent from the OpenJPA Developers mailing list archive at Nabble.com.
>>
>>
> 
> 

-- 
View this message in context: 
http://n2.nabble.com/Nested-Exception-Error-tp2226964p2231985.html
Sent from the OpenJPA Developers mailing list archive at Nabble.com.

Reply via email to