@TransactionAttribute(REQUIRED) cause no effect
<p>On the Oracle Database, Entity Table has constraint check(ID &lt; 90).
So, the second persist method throws SQLException.</p>

<p>But both code snippets below work equally:
first persist method doesn't commit even without JTA Annotations.
Why both variants works the same way?</p>

<pre><code>@Stateless
public class EntityServiceImpl implements EntityService{

@PersistenceContext
private EntityManager enManager;
@Resource
private SessionContext sessionCtx; 

@TransactionAttribute(REQUIRED)
public void updateEntity(List&lt;Entity&gt; entity) {
    try {
        Entity validEntity = entity.get(10);
        enManager.persist(validEntity);
        Entity inValidEntity = entity.get(90);
        enManager.persist(inValidEntity);

    } catch(Exception ex) {
        sessionCtx.setRollbackOnly();
        throw ex;
    }
}
</code></pre>

<p>second snippet:</p>

<pre><code>public void updateEntity(List&lt;Entity&gt; entity) {
        Entity validEntity = entity.get(10);
        enManager.persist(validEntity);
        Entity inValidEntity = entity.get(90);
        enManager.persist(inValidEntity);
}
</code></pre>

<p>persistence.xml</p>

<pre><code>&lt;persistence-unit name="WASLiberty" transaction-type="JTA"&gt;
    &lt;provider&gt;org.eclipse.persistence.jpa.PersistenceProvider&lt;/provider&gt;
    &lt;exclude-unlisted-classes&gt;false&lt;/exclude-unlisted-classes&gt;
    &lt;properties&gt;
        &lt;property name="eclipselink.logging.level.sql" value="FINEST"/&gt;
        &lt;property name="eclipselink.logging.parameters" value="true"/&gt;      
    &lt;/properties&gt;
&lt;/persistence-unit&gt;
</code></pre>

<p><strong>EDIT:</strong></p>

<p>From Oracle:</p>

<p><strong>Required</strong> Attribute
If the client is running within a transaction and invokes the enterprise bean’s method, the method executes within the client’s transaction. If the client is not associated with a transaction, the container starts a new transaction before running the method.</p>

<p><strong>The Required attribute is the implicit transaction attribute for all enterprise bean methods running with container-managed transaction demarcation. You typically do not set the Required attribute unless you need to override another transaction attribute. Because transaction attributes are declarative, you can easily change them later</strong></p>

<p>Does it means that there is no need to declare @TransactionAttribute(<strong>REQUIRED</strong>) unless we need another TransactionAttributeType except "REQUIRED"?</p>