@Scheduled定时器使用@Thransactional事物问题

最近遇到一个非常棘手的问题

当jpa使用update/delete时如果不添加@Thransactional会报
Executing an update/delete query;
nested exception is javax.persistence.TransactionRequiredException: Executing anupdate/delete query
异常

可是我添加@Thransactional还是会报这个异常
问了好多同行,他们都是告诉我定时器不能使用事物,实际并不是这样的,我查看了很多资料是可以使用的,@Scheduled和@Thransaction不能在同一个类中。
并且实体类要加上@EnableTransactionManagement注解,使我们这个工程支持事物
后来我试了很多

@Thransactional(rolbackFor=ThrowAble.class)
@Thransactional(rolbackFor=Exception.class)
@Thransactional(ReadOnly=false)//jpa默认不开启事物 等等就是想使事物进行回滚 可是造化弄人呀

废话不多说,直接上最关键的!!

// 在连接数据库也就是date jpa 工程的启动类中 配置
@Bean(name="transactionManager")
public PlatformTransactuibManager configurationTm(EntityManagerFactory factory){
	return new JpaTransactionManager(factory);
}

希望这篇文章对您有一定的帮助,也欢迎您积极地一起讨论成长。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
@Scheduled定时器的参数表由cron表达式组成,cron表达式包含6个或7个字段,每个字段代表特定的时间单位。以下是cron表达式中每个字段的含义: 1. 秒(0-59) 2. 分钟(0-59) 3. 小时(0-23) 4. 日期(1-31) 5. 月份(1-12) 6. 星期(0-7,星期天为0或7) 7. 年份(可选) 每个字段可以使用特定的符号和值来设置定时器的触发规则。例如,“*”表示所有值,例如在分钟字段上设置“*”表示每一分钟都会触发。而“?”表示不指定值,例如在周字段上设置“?”表示不关心是星期几。 还有其他符号和值可以用来设置定时器的触发规则,例如“-”表示区间,例如在小时字段上设置“10-12”表示10点、11点和12点都会触发。而“/”表示递增触发,例如在秒字段上设置“5/15”表示从5秒开始,每增加15秒触发一次。 除了符号外,还可以使用英文字母来设置定时器的触发规则,例如“L”表示最后的意思,例如在日字段上设置“L”表示当月的最后一天。而“W”表示离指定日期的最近那个工作日,例如在日字段上设置“15W”表示离每月15号最近的工作日触发。 另外,还可以结合使用多个符号和值来设置定时器的触发规则,例如“LW”表示在本月的最后一个工作日触发。 总结起来,@Scheduled定时器的参数表由cron表达式组成,通过设置不同的符号和值,可以灵活地指定定时器的触发规则。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值