次のスタック トレースがありますjavax.transaction.RollbackException
。
[...] 原因: ch.ethz.id.wai.lakshmi.engine.common.LakshmiException: ユーザー トランザクションの処理中にエラーが発生しました。ch.ethz.id.wai.lakshmi.engine.common.TransactionHelper.commitTransaction(TransactionHelper.java:79) で ch.ethz.id.wai.lakshmi.stdcmp.persistency.StandardPersistency.registerOrder(StandardPersistency.java:110) で原因: javax.transaction.RollbackException: ロールバックのマークが付けられたトランザクション。com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:473) com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:855) com.sun.enterprise.transaction.UserTransactionImpl.commit (UserTransactionImpl.java:208) ch.ethz.id.wai.lakshmi.engine.common.TransactionHelper.commitTransaction(TransactionHelper.java:74) で
org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387) で org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310) で) org.hibernate.ejb.AbstractEntityManagerImpl$CallbackExceptionMapperImpl.mapManagedFlushFailure(AbstractEntityManagerImpl.java:1510) で org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorImpl.beforeCompletion(SynchronizationCallbackCoordinatorImpl.java:109) で org.hibernate.engine. com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:435) の transaction.synchronization.internal.RegisteredSynchronization.beforeCompletion(RegisteredSynchronization.java:53)
org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) で org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) で org.hibernate.engine.jdbc.spi org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129) の .SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke の(AbstractProxyHandler.java:81) com.sun.proxy.$Proxy233.executeUpdate で (不明なソース) org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:56) で org.hibernate. org.hibernate.persister.entity の persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3028)。AbstractEntityPersister.insert(AbstractEntityPersister.java:3469) org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:88) org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362) org .hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:354) org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:275) org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener) .java:326) org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1213) で org.hibernate.internal.SessionImpl. org.hibernate.engine.transaction.synchronization.internal の managedFlush(SessionImpl.java:402)。SynchronizationCallbackCoordinatorImpl.beforeCompletion(SynchronizationCallbackCoordinatorImpl.java:104)
oracle.jdbc.driver.T4CTIoer.processError(T4CTIoer.java:439) で oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395) で oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802) ) oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436) で oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186) で oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java: 521) oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:205) で oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1008) で oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java) :1307) oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449) で、oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3530) で。jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350) at com.sun.gjc.spi.base.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:125) at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler. continueInvocation(AbstractStatementProxyHandler.java:122)
RollbackException
デバッグ中に確認できる原因があります。
javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: ORA-22295: 4000 バイトを超えるデータを 1 つのステートメントで LOB および LONG 列にバインドできません
これは次にによって引き起こされます
org.hibernate.exception.GenericJDBCException: ORA-22295: 4000 バイトを超えるデータを 1 つのステートメントで LOB および LONG 列にバインドできません
ただし、エラーの原因はRollbackExeption
スタック トレースには表示されません (これにより、エラーのデバッグが容易になります)。
理由について何か考えはありますか?
編集
テスト メソッド (JUnit) に try-catch を追加しました。
@Test
public void foo() throws Throwable {
try {
// test code generating the exception
} catch ( Exception e ) {
// here the exception cause is still there
}
このメソッドは JUnit によって直接呼び出されるため、コードを離れても例外は問題ありません。