大佬们问题开发中的问题

Far_Stars 2018-03-30 04:25:15
实际开发中遇到的问题。有3个方法,每个方法都有事务注解。a方法先后调用b、c方法。b、c方法中分别向同一张表插入一条数据,这时候c方法中就会报错,提示主键冲突。
有没有大佬解释一下这种情况的发生原因,以及优雅的解决方案。
...全文
341 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Far_Stars 2018-04-02
  • 打赏
  • 举报
回复
引用 1 楼 rabbitbug 的回复:
这要看你insert SQL是怎么写的 如果你的表id是自增的, 那一般来说是不会出现duplicated key问题, 如果id不是自增的 那你自己要写insert into table values(id_value, name_value); 如果b方法中id_value是10, C方法中id_value也是10 那就会出现duplicated key 或是并发时, 两个用户同时访问a 方法, 前后也可能出现这问题如果未处理好key唯一时
数据库表id是主键自增的
Coder_D 2018-04-02
  • 打赏
  • 举报
回复
是不是事务传播配置的有问题,看你代码,像是b插入之后,但是还没提交事务,c和b不在同一个事务里,看不到b提交的东西,后面不管谁先提交,后面提交的那个都会因为前一个提交,主键已经被占用了而报错
rabbitbug 2018-03-30
  • 打赏
  • 举报
回复
这要看你insert SQL是怎么写的 如果你的表id是自增的, 那一般来说是不会出现duplicated key问题, 如果id不是自增的 那你自己要写insert into table values(id_value, name_value); 如果b方法中id_value是10, C方法中id_value也是10 那就会出现duplicated key 或是并发时, 两个用户同时访问a 方法, 前后也可能出现这问题如果未处理好key唯一时

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧