添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

2.2 创建第三方账单( 以"A服务"流水号作为主键 ) (jpa save)

2.3 响应 "A服务" 请求

3. "A服务" 在未接收到响应的同时,再次请求 "B服务" 发起 创建账单

预期:“B服务 ”应有 "2条第三方账单",但实际只有 最后一步骤的数据,前面的数据丢失。

从上述情况,就可以看出。JPA 的 save 不等于  INSERT INTO 。

分析1: 第一次创建的第三方账单,使用 " 流水号 " 作为主键,将数据保存下来;

分析2 :第二次创建时," 同一流水号 " 作为主键保存时,发现已经存在,则更新并替换数据。

事实 : save 并没有失效,而是它具有插入和更新的能力。

办法1 :使用明确的SQL , 执行Insert Into 语句,从本质上解决,后续被捕获异常。

办法2 :通过锁的方式,先查询没有再save。(对于大量并发并不适用哦)

办法3 :通过缓存中间件,例如 Redis 等,但弊端受限于网络。服务集群可以这样处理。

** 希望得到你的参与和支持。 如果内容有描述不恰当的地方,请指出。 谢谢!**

最近使用 Jpa Repository方法,发现有个字段一直没有修改成功; 最后发现实体类加了注解updatable = false,如下 @Column(name = "patient_package_id", length = 64, updatable = false) private String patientPackageId; updatable = false意思是更新操作时候,不会对该字段进行修改;(稍微不注意就掉坑里了) 最后,个人建议:还是少用 Jpa Repository,还是手写
@EnableTransactionManagement public class SpringbootApplication { public static void main(String[] args) { SpringApplica...
近日朋友项目出现了一个问题,就是使用 JPA 的save方法进行DB保存,即使出现错误,也不希望事务回滚(但是如果这样不应该不加事务注解么?),但是使用过程中发现即使catch住异常,事务依然回滚了, 经过调试,调用save方法后根本不走catch代表块,通过debug观察SQL打印时间,发现调用save方法后,并没有出现SQL语句在日志中,而是等业务方法执行完毕后,才打印SQL语句并出现异常, 异常则被代理类捕捉了,由于 JPA 做了很多优化,根据调用save方法不及时打印SQL来看,极有可能是 JPA 为了节省
@RequestMapping("/ jpa test") public String jpa Test(ModelMap modelMap){ userRepository.save(new User("python","123456","xxxxx@126.com")); List<User> users = userRepository.findAll(); modelMap.put("users", users); return " jpa test"; * 输出字符串测试 * http://localhost:8080/helloboot * @return @RequestMapping("/hellotest") public String helloTest(){ return "Hello!"; * htmltest * @return @RequestMapping("/htmltest") public String test(){ return "login"; * 测试 Model * spring自动为Model创建实例,并作为controller的入参 * @param model * @param name * @return @RequestMapping("/modeltest") public String testVelocity(Model model, String name){ if (name==null ||name.isEmpty()){ name ="您没有输入名字!"; model.addAttribute("name", name); return "modeltest"; * 测试 ModelAndView * @param name * @return @RequestMapping("modelandview") public ModelAndView testModel(String name) { if (name==null ||name.isEmpty()){ name ="您没有输入名字!"; //构建ModelAndView实例,并设置跳转地址 ModelAndView view = new ModelAndView("modelandviewtest"); //将数据放置到ModelAndView对象view中,第二个参数可以是任何java类型 view.addObject("name", name); //返回ModelAndView对象view return view;
Java-SpringBoot-@ Transactional -事务注解的 失效 和不回滚的场景 事务(Transaction)指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 SpringBoot 通过 @ Transactional 注解大大简化了开发时事务使用的复杂度,但同时也引入了不少隐藏的坑。 使用不当会引起事务 失效 、不能回滚等情况,从而破坏记录的完整性。 我们梳理下导致事务 失效 的常见错误避免踩坑。 Spring Boot (v2.6.7) ORM JPA 数据库驱动
相信大家在日常工作中也都曾遇到过@ Transactional 注解 失效 的情况,今天我来总结下@ Transactional 注解 失效 的6中情况。 1.方法是非public修饰的 解决方法: 改成public修饰。 2.异常被捕获了,没有抛出 解决方法: 直接抛出需要回滚的异常,不要try-catch住。 3.方法内部直接调用 代码示例: 4.新开启一个线程 5.数据库本身不支持 6.事务传播属性设置错误,如设置了:PROPAGATION_NOT_SUPPORIED(以非事务的方式执行,如果当
在使用 JPA 时,可以通过重写save方法来实现自定义的保存逻辑。在@Enable Jpa Repositories注解中,可以指定要扫描的repository包,并使用repositoryBaseClass参数指定重写的save类。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ jpa 之动态插入与修改(重写save)](https://blog.csdn.net/qq_34874784/article/details/104846923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Spring Data JPA 批量插入过慢及其优化 —— 自定义Repository](https://blog.csdn.net/tfstone/article/details/113741890)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [springboot jpa mysql controller演示](https://download.csdn.net/download/codepython/10577688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]