java—在使用jpa hibernate更新数据库时,有没有办法消除“transactionrequiredexception:executing an update/delete query”错误?

xa9qqrwz  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(696)

当我从java测试类调用并运行这个方法时,我得到一个 javax.persistence.TransactionRequiredException: Executing an update/delete query 错误。我会做错什么?我在网上查了一下,发现了一个流行的建议,建议在方法中添加@transactional注解。不幸的是,此操作没有解决我的查询。我进口的 import javax.transaction.Transactional; ```
@Transactional
public List testUpdate() {
return execute("punit", entityManager -> {
Query query = entityManager.createNamedQuery("myDate").setMaxResults(20);
LocalDateTime dayBefore = LocalDateTime.now().minusDays(1);
query.setParameter("previousDate", Timestamp.valueOf(dayBefore)).executeUpdate();
return query.getResultList();
});
}

sd2nnvve

sd2nnvve1#

作为配置xml的形式,很明显您将使用基于spring的事务。
请确保您使用的导入
@Transactional "org.springframework.transaction.annotation.Transactional" 对你来说可能是 "javax.transaction.Transactional" 只需尝试下面的代码。对我来说很好。

package com.sample;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.Optional;

@Service
@Transactional
@Slf4j
public class Sample {

    @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.SERIALIZABLE)
    public Optional<Model> updateRecord() {
        return null;
    }
}

相关问题