2017-09-26 3 views
0

ローカルデータベースで更新を試みていますが、 "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 { 


} 

私は私の2つの方法で更新を実行しようとした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; 
    } 


} 

を使用して、クラスTransferenciasを呼んだときに私はSessionBeanを持っていますnativeQueryを使用し、createQueryの方法をentityManagerで使用して計算します。

em.getResultList()を実行するとうまくいきますが、アップデートをしようとするとエラーが発生します。

+1

'@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)' ** ??????? *を参照してくださいようなものが必要トランザクションマネージャ

を指定していません* –

+1

@TransactionAttribute(...)を削除します。 – ujulu

+0

私はこのアノテーションを削除して更新することができました。それは愚かなエラーだった、あなたが望むなら、あなたはその質問に答えることができ、私はあなたに正しい答えを与えるつもりです、ありがとう。 – Allanh

答えて

0

あなたが

<persistence-unit name="GestionPagoTramiteUtilImplementacion" transaction-type="RESOURCE_LOCAL">> 

http://www.eclipse.org/eclipselink/documentation/2.5/solutions/testingjpa002.htm

+0

こんにちはエセックスボーイ、返信いただきありがとうございます。私は 'persistence.xml'にその名前の' Persistence-Unit'を持っていますが、 'transaction-type =" RESOURCE_LOCAL "というプロパティを追加しましたが、私は同じエラーがあります – Allanh

関連する問題