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.