I'm trying to do an update in my local database, but when I excute an "executeUpdate
" I'm getting the next error :
javax.persistence.TransactionRequiredException: Exception Description: No externally managed transaction is currently active for this thread
This is my persistence.xml
:
<?xml version="1.0" encoding="windows-1252" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="GestionPagoTramiteUtilImplementacion">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/servicioswebDS</jta-data-source>
<class>modelo.Transferencias</class>
<properties>
<property name="eclipselink.target-server" value="WebLogic_10"/>
<property name="javax.persistence.jtaDataSource" value="jdbc/servicioswebDS"/>
</properties>
</persistence-unit>
</persistence>
This is the Class Transferencias.java
:
@Entity
@NamedQueries({
@NamedQuery(name = "Transferencias.findAll", query = "select o from Transferencias o"),
@NamedQuery(name = "Transferencias.asociarPagoTramiteUpdate", query = "UPDATE Transferencias o SET o.usado = :p_usado , o.cdgpraradicacion = :p_codigoParaRadicacion WHERE o.trazabilitycode = :p_identificadorTransaccion")
})
public class Transferencias implements Serializable {
}
I have a SessionBean
when I'm calling the class Transferencias
Using an EntityManager
@Stateless(name = "PagoTramiteSession",
mappedName = "InvimaPortafolioServicios-GestionPagoTramiteUtilImplementacion-PagoTramiteSession")
public class PagoTramiteSessionBean implements PagoTramiteSession, PagoTramiteSessionLocal {
@Resource
SessionContext sessionContext;
@PersistenceContext(unitName = "GestionPagoTramiteUtilImplementacion")
private EntityManager em;
public PagoTramiteSessionBean() {
}
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public boolean actualizarPagoTramite(BigDecimal codigoParaRadicacion, String identificadorTransaccion,
String usado) throws SQLException {
try {
Query query;
// String sql =
// "UPDATE Transferencias t " + " SET t.usado = :p_usado, " +
// "t.cdgpraradicacion = :p_codigoParaRadicacion " +
// " WHERE t.trazabilitycode = :p_identificadorTransaccion";
// query = em.createQuery(sql);
// query.setParameter("p_usado", usado);
// query.setParameter("p_codigoParaRadicacion", codigoParaRadicacion);
// query.setParameter("p_identificadorTransaccion", identificadorTransaccion);
// int retorno = query.executeUpdate();
// if (retorno >= 1) {
// return true;
// } else {
// return false;
// }
query = em.createNamedQuery("Transferencias.asociarPagoTramiteUpdate");
query.setParameter("p_usado", usado);
query.setParameter("p_codigoParaRadicacion", codigoParaRadicacion);
query.setParameter("p_identificadorTransaccion", identificadorTransaccion);
int retorno = query.executeUpdate();
if (retorno >= 1) {
return true;
} else {
return false;
}
} catch (Exception e) {
System.out.println(e);
}
return false;
}
}
I have tried to execute the update in two ways, using a nativeQuery
and using a createQuery
method by entityManager
.
When I execute a em.getResultList()
this works fine, but when I'm trying to do an update I have the error.