首页 > 解决方案 > 获取 TransactionRequiredException:在删除时执行更新/删除查询

问题描述

import javax.persistence.Query;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
 
@Repository("EmployeeGroupDao")
public class EmployeeGroupJpaDao implements EmployeeGroupDao {
 
    @Transactional
    public int deleteAll() {
        StringBuilder buf = new StringBuilder();
        buf.append("DELETE FROM EmployeeGroup");
        Query query = getEntityManager().createQuery(buf.toString());
        int result = query.executeUpdate();
        LOG.info("Numbers of records deleted " + result);
        return result;
    }

收到以下错误-我确实在方法上有@Transactional。使用 oracle 数据库。

 Getting an error 
    javax.persistence.TransactionRequiredException: Executing an update/delete query
        at org.hibernate.jpa.spi.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:71) ~[hibernate-entitymanager-4.3.10.Final.jar:4.3.10.Final]
        at EmployeeGroupJpaDao.deleteAll(EmployeeGroupJpaDao.java:34) ~[classes/:na]

还尝试了 import javax.transaction.Transactional 而不是 org.springframework.transaction.annotation.Transactional 和同样的错误

标签: javaspringhibernate

解决方案


推荐阅读