時,沒有外部管理的事務處理當前處於活動狀態當我嘗試在本地數據庫中執行更新時,但是當我執行「executeUpdate
」時,出現下一個錯誤:當我試圖更新
javax.persistence.TransactionRequiredException:異常 描述:沒有外部管理的事務是目前 這個線程活躍
這是我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>
這是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 {
}
我有一個SessionBean
當我調用類Transferencias
使用的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;
}
}
我已經嘗試了兩種方式來執行更新,使用nativeQuery
並使用方法entityManager
。
當我執行em.getResultList()
這工作正常,但是當我試圖做更新時,我有錯誤。
'@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)'** ??????? * * –
刪除@TransactionAttribute(...)。 – ujulu
我刪除了這個加法,我可以更新。這是一個愚蠢的錯誤,如果你願意,你可以回答這個問題,我會給你正確的答案,非常感謝。 – Allanh