【问题标题】:Spring data Truncate TransactionRequiredException Executing an update/delete querySpring data Truncate TransactionRequiredException 执行更新/删除查询
【发布时间】:2023-03-26 11:41:01
【问题描述】:

回购定义如下:

import javax.transaction.Transactional;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;

import com.thy.crewdb.jpa.Schedule;

public interface ScheduleRepo extends CrudRepository<Schedule, String> {

   @Query(value = "TRUNCATE TABLE SCHEDULE", nativeQuery = true)
   @Modifying
   @Transactional
   void truncate();

}

应用上下文定义如下:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="xJndi" />
    <property name="resourceRef" value="true" />
</bean>

<!-- ################################################################################################################ -->

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="packagesToScan" value="com.x.jpa" />
    <property name="jtaDataSource" ref="dataSource" />
    <property name="validationMode" value="NONE" />
    <property name="jpaDialect">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
    </property>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="database" value="ORACLE" />
            <property name="generateDdl" value="false" />
        </bean>
    </property>
    <property name="jpaProperties">
        <props>

            ....

            <prop key="hibernate.transaction.auto_close_session">true</prop>
            <prop key="hibernate.connection.release_mode">auto</prop>
            <prop key="hibernate.transaction.jta.platform">org.hibernate.service.jta.platform.internal.WeblogicJtaPlatform
            </prop>

        </props>
    </property>
</bean>

<!-- ################################################################################################################ -->

<tx:jta-transaction-manager />


<jpa:repositories base-package="com.x.repo" />

当我尝试调用 truncate 方法时,它给出“javax.persistence.TransactionRequiredException: Executing an update/delete query”。我也尝试使用 spring 事务注释,它不起作用。

【问题讨论】:

  • 确保配置中有
  • 不幸的是,它不起作用。据我所知 sprig-data 处理它。

标签: oracle spring-data spring-data-jpa truncate jta


【解决方案1】:

看来你应该使用

import org.springframework.transaction.annotation.Transactional;

而不是

import javax.transaction.Transactional;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-07
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 2013-04-18
    • 1970-01-01
    • 2021-07-04
    相关资源
    最近更新 更多