DynamicUpdate

简要描述:

  • 很多实体未配置此属性导致多线程更新时将不需要更新的字段覆盖回旧值

场景分析:

 public class OrderRecon implements Serializable {

    @Id
    @GeneratedValue
    private Long id;

    private String txnId;

    private String gateId;

    }
    

数据库中记录

temp.jpg
    
    方法一:
        OrderRecon order = dao.get(1267l);
        order.setTxnId("111");
        dao.update(order);
        
    方法二:
    OrderRecon order = dao.get(1267l);
        order.setGateId("111");
        dao.update(order);
    
    
    此时,多线程情况下,不管先执行哪个方法,线程二在线程一提交之前读出记录再去更新,就会出现将其中一个值更新回去的情况,除非同时加锁,但是这里两个业务更新不同的业务字段其实不存在锁的需求.
    

解决方案:

添加注解
@DynamicUpdate(true)
public class OrderRecon implements Serializable

注意事项:此方式只有在对象是持久化的情况下才能生效,否则无效,
非持久化的需求情况下请使用
update(final I id, final Map<String, Object> props);
 
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,331评论 2 89
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,978评论 1 92
  • 想要得到一些什么 你就必须失去一些什么 享受自然是要付出代价的 恍恍惚惚 昏昏暗暗 是黄昏的美景 还是破晓的寂静
    流江樱枫阅读 399评论 0 1
  • 假期结束,马不停蹄赶往学校,兴冲冲跑去隔壁宿舍寻找同事,推门,见床上干干净净,所有被褥不见踪影,平日挂满了衣物的绳...
    许6569阅读 420评论 5 4

友情链接更多精彩内容