package io.ebeaninternal.server.transaction;

import javax.persistence.PersistenceException;
import java.sql.Connection;

Transaction based on a java.sql.Connection supplied by an external transaction manager such as Spring.

This means that the transaction demarcation [commit(), rollback(), end()] must be controlled externally (by Spring etc) and so these methods [commit(), rollback(), end()] can not be called on this ExternalJdbcTransaction.

That is, a transaction started externally (by Spring etc) must be committed or rolled back externally as well.

/** * Transaction based on a java.sql.Connection supplied by an external * transaction manager such as Spring. * <p> * This means that the transaction demarcation [commit(), rollback(), end()] * must be controlled externally (by Spring etc) and so these methods [commit(), * rollback(), end()] can not be called on this ExternalJdbcTransaction. * </p> * <p> * That is, a transaction started externally (by Spring etc) must be committed * or rolled back externally as well. * </p> */
public class ExternalJdbcTransaction extends JdbcTransaction {
Create a Transaction that will have no transaction logging support.

You need to create with a TransactionManager to have transaction logging.

/** * Create a Transaction that will have no transaction logging support. * <p> * You need to create with a TransactionManager to have transaction logging. * </p> */
public ExternalJdbcTransaction(Connection connection) { super(null, true, connection, null); }
Construct will all explicit parameters.
/** * Construct will all explicit parameters. */
public ExternalJdbcTransaction(String id, boolean explicit, Connection connection, TransactionManager manager) { super(id, explicit, connection, manager); }
This will always throw a PersistenceException.

Externally created connections should be committed or rolled back externally.

/** * This will always throw a PersistenceException. * <p> * Externally created connections should be committed or rolled back externally. * </p> */
@Override public void commit() { throw new PersistenceException("This is an external transaction so must be committed externally"); }
This will always throw a PersistenceException.

Externally created connections should be committed or rolled back externally.

/** * This will always throw a PersistenceException. * <p> * Externally created connections should be committed or rolled back externally. * </p> */
@Override public void end() throws PersistenceException { throw new PersistenceException("This is an external transaction so must be committed externally"); }
This will always throw a PersistenceException.

Externally created connections should be committed or rolled back externally.

/** * This will always throw a PersistenceException. * <p> * Externally created connections should be committed or rolled back externally. * </p> */
@Override public void rollback() throws PersistenceException { throw new PersistenceException("This is an external transaction so must be rolled back externally"); }
This will always throw a PersistenceException.

Externally created connections should be committed or rolled back externally.

/** * This will always throw a PersistenceException. * <p> * Externally created connections should be committed or rolled back externally. * </p> */
@Override public void rollback(Throwable e) throws PersistenceException { throw new PersistenceException("This is an external transaction so must be rolled back externally", e); } }