"我将 latke-demo 项目运行起来, 访问 http://localhost:8080/register 添加数据时,程序出现如下异常 [图片] 我断点进入JdbcRepository的add方法里面的变量currentTransaction为null,说明没有获取到事务。 于是,我就手动添加事务给该方法,如下图 .."

latke-demo 事务问题

本贴最后更新于 227 天前,其中的信息可能已经事过景迁

我将 latke-demo 项目运行起来, 访问 http://localhost:8080/register 添加数据时,程序出现如下异常
menusaveimgsavepath20181204145338jpg
我断点进入JdbcRepositoryadd方法里面的变量currentTransactionnull,说明没有获取到事务。
于是,我就手动添加事务给该方法,如下图
menusaveimgsavepath20181204145937jpg
userRepository.add(user)上面手动创建事务Transaction transaction = userRepository.beginTransaction();
并手动提交事务transaction.commit();
此时就能够成功插入数据到数据库,
我想知道是什么原因导致注解事务@Transactional没有生效呢
我使用的数据库是 mysql5.7

  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    50 引用 • 365 回帖 • 516 关注
  • 事务
    15 引用 • 16 回帖 • 1 关注
  • Q&A

    提问之前请先看一下这篇文章 《提问的智慧》精读注解版,好的问题比好的答案更有价值。

    1046 引用 • 6671 回帖 • 594 关注
被采纳的回答
  • 88250    

    更新到最新的代码应该就没问题了。

4 回帖   
请输入回帖内容...
  • 88250

    更新到最新的代码应该就没问题了。

    1 回复
  • loyal        

    谢谢大佬,这个问题是怎样解决的呢

    1 回复
  • 88250      

    之前处理声明式事务的时候有个 bug,把以 org.b3log.latke 开头的包给排除了,目前已经修复,你更新 demo 的代码后就会看到已经换了包名了。最近 Latke 还在做一些新的特性,比如通过函数式编程配置路由,重写 URI 模板匹配等。有空的话可以看下最近提交的代码,相比之前的实现做了大量简化,去掉了很多不必要的扩展支持,更小巧轻量。

    1 回复
  • loyal        

    哦哦,原来如此,感谢大佬