【发布时间】:2018-10-21 00:20:18
【问题描述】:
我有一种方法,首先通过一种类型从我的表中获取最后一个 id。 然后我用这个数字设置我的 bean 并保存
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);
}
该方法有更多逻辑(保存文件等)然后将其返回给我的用户
但是当我运行我的测试时,他捕获了几次相同的数字(数字)我认为这是因为 jpa 在我执行 saveAndFlush 时没有提交我的事务。
那么我怎样才能使我的同步块中的所有内容都使用 jpa 提交
tks
【问题讨论】:
-
它在服务中吗?服务是否用
@Transactional注解?我认为您可能需要提供更多背景信息。
标签: spring-boot transactions spring-data-jpa