如何解决使用JPA休眠模式更新数据库时,是否有方法可以消除“ TransactionRequiredException:执行更新/删除查询”错误?
当我从Java测试类调用并运行此方法时,出现javax.persistence.TransactionRequiredException: Executing an update/delete query
错误。我做错了什么?我在网上进行了挖掘,发现了一个流行的建议,即将@Transactional注释添加到该方法中。不幸的是,此操作无法解决我的查询。
我导入了import javax.transaction.Transactional;
@Transactional
public List<TestEntity> 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();
});
}
解决方法
作为配置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;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。