日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java - 保存日志到mongo失敗,樂觀鎖異常

瀏覽:263日期:2024-01-19 14:57:29

問題描述

想把mongo保存進mongoDB中,使用的spring-boot-data-mongo.在dao層可以正常保存,但是寫在service中報錯:

org.springframework.dao.OptimisticLockingFailureException: Optimistic lock exception on saving entity: {_class=com.zihexin.base.mongo.MerchantRequestLog, version=1, requestIp=1111, requestDate=Tue Mar 21 17:15:01 CST 2017, requestParam=22222, paymentWay=213} to collection merchant_request_log at org.springframework.data.mongodb.core.MongoTemplate$12.doInCollection(MongoTemplate.java:1135) at org.springframework.data.mongodb.core.MongoTemplate$12.doInCollection(MongoTemplate.java:1108) at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:461) at org.springframework.data.mongodb.core.MongoTemplate.doUpdate(MongoTemplate.java:1108) at org.springframework.data.mongodb.core.MongoTemplate.doSaveVersioned(MongoTemplate.java:977) at org.springframework.data.mongodb.core.MongoTemplate.save(MongoTemplate.java:941) at org.springframework.data.mongodb.repository.support.SimpleMongoRepository.save(SimpleMongoRepository.java:78) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:483) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:468) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:440) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) at com.sun.proxy.$Proxy84.save(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) at com.sun.proxy.$Proxy84.save(Unknown Source) at com.zihexin.base.service.MongoService.saveRequestLog(MongoService.java:44) at com.zihexin.ZhxpayCommonApplicationTests.test4(ZhxpayCommonApplicationTests.java:72) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)

service中代碼:

@Servicepublic class MongoService { private static Logger logger = LoggerFactory.getLogger(MongoService.class); /**商戶請求相關*/ //判斷流水號重復或者為空 @Autowired MerchantRequestLogRepo merchantRequestLogRepo; public boolean exists(String requestId){return merchantRequestLogRepo.exists(requestId); } //異步保存mongo日志// @Async public void saveRequestLog(String ip,String paramMap, String requestId,String paymentWay){long start = System.currentTimeMillis();logger.info('Async Save Merchant Request Log Begin : ');MerchantRequestLog merchantRequestLog = new MerchantRequestLog();merchantRequestLog.setRequestDate(new Date());merchantRequestLog.setRequestId(requestId);merchantRequestLog.setRequestParam(paramMap);merchantRequestLog.setRequestIp(ip);merchantRequestLog.setPaymentWay(paymentWay);//merchantRequestLog.setHostIp(Constants.hostAddress);merchantRequestLogRepo.save(merchantRequestLog);logger.info('Async Save Merchant Request Log End ,Spend Time :{} ms',System.currentTimeMillis()-start); }

save()方法為繼承MongoRepository中的方法,我改為insert()后就可以正常保存了,想不明白為什么,希望大家幫忙解答一下,謝謝!

問題解答

回答1:

2點供考慮:

1,樂觀鎖主要是依靠version來處理沖突的,樂觀鎖的異常主要是:

1)Insert的時候發現待插入的數據,有更為新的version的數據了,因為有其他的同樣的Insert的操作;2)Update的時候發現待修改的數據,有更為新的version的數據了,因為有其他的同樣的Update的操作。這個需要檢查一下應用需求,是否可以接受這種異常;如果接受不了,就需要進一步修改。

2,為什么Save不行,而Insert可以?請留意MongoDB中的Save和Insert的區別。

1)Save如果帶_id,有可能是Update;2)Save如果不帶_id,和Insert一樣。簡而言之,Save可以是一個Update操作。

供參考。

Love MongoDB! Have Fun!

標簽: java
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品亚洲欧美| 国产精品入口久久| 欧美日韩视频免费观看| 日韩欧美三级| 亚洲一区成人| 青草国产精品久久久久久| 国产精品欧美日韩一区| 91视频精品| 蜜臀av免费一区二区三区| 视频一区欧美日韩| 国产精品视频3p| 成人自拍av| 亚洲在线观看| 中文字幕亚洲在线观看| 国产日产一区| 精品三级久久| 中文字幕日韩高清在线| 久久午夜影院| 国产精品婷婷| 欧美aa在线视频| 免费毛片在线不卡| 国产欧美91| 五月综合激情| 免费精品一区| 首页亚洲欧美制服丝腿| 久久不卡日韩美女| 久久久久国产| 日本久久二区| 成人在线视频中文字幕| 黄色日韩在线| 精品视频网站| 一级欧美视频| 黄色aa久久| 日韩综合一区二区| 成人精品中文字幕| 日本成人在线不卡视频| 久久天堂成人| 18国产精品| 亚洲国产一区二区三区在线播放| 欧美影院视频| 欧美日韩国产综合网| 里番精品3d一二三区| 日本欧美在线看| 成人免费一区| 日韩一区二区三区四区五区| 99成人在线视频| 久久三级毛片| 日韩精品91亚洲二区在线观看| 精品免费av在线| 国产精品毛片视频| 久久国产精品99国产| 日韩国产一区二区三区| 国产欧美一区二区三区米奇| 夜夜精品视频| av在线日韩| 国产欧美88| 日本欧美在线看| 99久久99视频只有精品| 老鸭窝一区二区久久精品| 日韩亚洲精品在线观看| 欧美日韩色图| 美女一区网站| 加勒比视频一区| 国产精品宾馆| 欧美亚洲三级| 四虎在线精品| 蜜臀av性久久久久蜜臀aⅴ四虎 | av一区二区高清| 国产激情在线播放| 国产精品日本一区二区三区在线 | 成人亚洲一区二区| 国产精品视频一区视频二区| 亚洲人成网站在线在线观看| 亚洲精品123区| 久久人人88| 日本精品不卡| 日韩不卡免费高清视频| 一本大道色婷婷在线| 国产91在线精品| 精品三级av| 精品亚洲a∨| 精品无人区麻豆乱码久久久| 久久wwww| 国产精品入口久久| 国产情侣久久| 国产精品magnet| 欧美国产另类| 久久精品国产999大香线蕉| 精品三级av在线导航| 精品国产aⅴ| 日韩欧美字幕| 精品在线99| 视频一区二区国产| 亚洲三级网站| 日韩高清电影一区| 国产欧美一区二区三区国产幕精品 | 欧美一区二区三区高清视频| 亚洲天堂一区二区| 国产99亚洲| 亚洲在线网站| 亚洲欧洲日韩| 久久激情五月激情| 国精品产品一区| 久久亚洲国产| 香蕉成人久久| 日韩国产一二三区| 国产精品日本一区二区不卡视频| 久久不卡日韩美女| 中文字幕在线视频久| 日韩中文视频| 99视频在线精品国自产拍免费观看| 男人天堂欧美日韩| 日韩精彩视频在线观看| 国产高清视频一区二区| 久久影院午夜精品| 免费视频亚洲| 日韩影片在线观看| 久久免费精品| 国产精品7m凸凹视频分类| 亚洲综合福利| 蜜桃精品视频| 国产精品99一区二区| 亚洲毛片在线免费| 国产精品免费精品自在线观看| 久久亚洲黄色| 久久久精品日韩| 亚洲精品免费观看| 98精品视频| 久久av一区二区三区| 国产精品伦一区二区| 国产99亚洲| 日本一区免费网站| а√天堂8资源在线| 蜜臀国产一区二区三区在线播放| 久久的色偷偷| 国产偷自视频区视频一区二区| 国产精品欧美三级在线观看 | 久久久久99| 亚洲精品欧美| 综合日韩av| 亚洲狼人精品一区二区三区| 精品国产亚洲一区二区在线观看| 自拍日韩欧美| 久久精品国产久精国产爱| 一区视频在线| 久久影院一区二区三区| 模特精品在线| 日本不良网站在线观看| 午夜久久av| 精精国产xxxx视频在线野外| 日韩超碰人人爽人人做人人添| 99精品综合| 久久伊人国产| 婷婷精品久久久久久久久久不卡| 97精品国产| 国产亚洲精品精品国产亚洲综合| 久久中文字幕二区| 麻豆精品99| 亚洲精品高潮| 欧美不卡高清| а√在线中文在线新版| 日本视频一区二区| 夜夜精品视频| 亚洲精品成人图区| 青青草国产精品亚洲专区无| 国内亚洲精品| 日韩成人a**站| 国产精品一页| 亚洲欧洲专区| 亚洲一卡久久| 久久精品在线| 精品国产精品久久一区免费式| 亚洲不卡视频| 99视频+国产日韩欧美| 欧美二三四区| 精品国产aⅴ| 国产日韩欧美一区二区三区 | 黄色日韩精品| 日韩国产欧美| 国产精品久久久久久久免费观看 | 欧美片第1页| 91欧美日韩| 国产精品久久久久久久久久白浆 | 麻豆视频观看网址久久| 日韩av资源网| 一区二区电影| 99香蕉国产精品偷在线观看| 久久九九电影| 香蕉视频亚洲一级| 国产不卡一区| 久久久91麻豆精品国产一区| 欧美亚洲色图校园春色| 亚洲乱码久久| 亚洲1区在线观看| 亚洲a成人v| 日本aⅴ免费视频一区二区三区| 蜜桃传媒麻豆第一区在线观看| 亚洲欧洲一区二区天堂久久| 日韩视频中文| 亚洲欧美日韩视频二区|