Spring boot 如何使存储库保存与Spring Boot同步
我有一个方法,它首先通过一种类型从表中获取最后一个id。 然后我用这个数字设置bean并保存Spring boot 如何使存储库保存与Spring Boot同步,spring-boot,transactions,spring-data-jpa,Spring Boot,Transactions,Spring Data Jpa,我有一个方法,它首先通过一种类型从表中获取最后一个id。 然后我用这个数字设置bean并保存 Long number = geradorProtocoloService.getNumero(protocolo.getTipo() protocolo.setNumber(number); protocolo = protocoloRepository.saveAndFlush(protocolo); 我把这个代码放在一个同步块中 synchronized (this
Long number = geradorProtocoloService.getNumero(protocolo.getTipo()
protocolo.setNumber(number);
protocolo = protocoloRepository.saveAndFlush(protocolo);
我把这个代码放在一个同步块中
synchronized (this) {
protocolo.setNumero(geradorProtocoloService.getNumero(protocolo.getTipo());
protocolo = protocoloRepository.saveAndFlush(protocolo);
}
该方法具有更多逻辑(保存文件等),然后将其返回给我的用户
但是当我运行我的测试时,他捕捉到了几次相同的数字(numero),我认为这是因为当我执行saveAndFlush时jpa没有提交我的事务
那么,我怎样才能使同步块中的所有内容都提交给jpa呢
你的分析可能是对的
通常,事务由
@Transactional
注释控制。因此,如果您在Springbean中的一个方法中使用@Transactional
注释提取同步块,并从任何事务外部调用它,它最终将提交。它是否在服务中?服务是否用@Transactional
注释?我认为你可能需要提供更多的背景。