Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 原因:javax.persistence.TransactionRequiredException:执行更新/删除查询_Spring_Hibernate_Jpa_Transactional - Fatal编程技术网

Spring 原因:javax.persistence.TransactionRequiredException:执行更新/删除查询

Spring 原因:javax.persistence.TransactionRequiredException:执行更新/删除查询,spring,hibernate,jpa,transactional,Spring,Hibernate,Jpa,Transactional,我正在使用JSpring和JPA/Hibernate进行一个项目。我尝试调用本机查询来更新数据库。以下是错误跟踪: 原因:javax.persistence.TransactionRequiredException:执行更新/删除查询 位于org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:96) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处

我正在使用JSpring和JPA/Hibernate进行一个项目。我尝试调用本机查询来更新数据库。以下是错误跟踪:

原因:javax.persistence.TransactionRequiredException:执行更新/删除查询
位于org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:96)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:311)
位于com.sun.proxy.$Proxy31.executeUpdate(未知源)
位于com.ncrm.dao.daoImpl.updateText(daoImpl.java:124)
在com.ncrm.metier.MetierImpl.UpdateExt上(MetierImpl.java:663)
登录com.ncrm.loginBean.authentication(loginBean.java:57)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.apache.el.parser.AstValue.invoke(AstValue.java:262)
位于org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
在com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)上
位于javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)


我的坚持:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="ncrm_extraction" transaction-type="RESOURCE_LOCAL">
        <!-- <class>com.ncrm.dao.entities.user</class> -->

    </persistence-unit> 

    <persistence-unit name="BpaProduciton" transaction-type="RESOURCE_LOCAL">
        <!-- <class>com.ncrm.dao.entities.user</class> -->
    </persistence-unit>
</persistence>

假设您修改了DaoImpl,如下所示

@Modifying(clearAutomatically = true)
@Transactional
public int UpdateExt(String pk_obj_id_Rem,String Req) {
        logger.debug("@@@ DAO : Modifier le flag EXT table  remise : "+pk_obj_id_Rem );
        Query q = emBpa.createNativeQuery(Req);
        int flag=q.executeUpdate();
        return flag;
}
希望这有帮助


有关更多详细信息,请参阅此文档。

假设您修改DaoImpl,如下所示

@Modifying(clearAutomatically = true)
@Transactional
public int UpdateExt(String pk_obj_id_Rem,String Req) {
        logger.debug("@@@ DAO : Modifier le flag EXT table  remise : "+pk_obj_id_Rem );
        Query q = emBpa.createNativeQuery(Req);
        int flag=q.executeUpdate();
        return flag;
}
希望这有帮助


有关更多详细信息,请参阅此部分。

您正在使用的spring版本是什么?您正在使用的spring版本是什么?感谢您的所有回复,我通过添加事务名称解决了问题,因为我的应用程序上下文中有多个JpaTransactionManager谢谢您的所有回复,我通过添加事务的名称解决了这个问题,因为我的应用程序上下文中有不止一个JpaTransactionManager
@Modifying(clearAutomatically = true)
@Transactional
public int UpdateExt(String pk_obj_id_Rem,String Req) {
        logger.debug("@@@ DAO : Modifier le flag EXT table  remise : "+pk_obj_id_Rem );
        Query q = emBpa.createNativeQuery(Req);
        int flag=q.executeUpdate();
        return flag;
}