Я использую Spring boot и создаю отдых для сохранения данных в базу данных.Теперь у меня проблема, когда вы вызываете эту службу в то же время, мои данные дублируются в базе данных, потому что предыдущий запрос еще не завершен.
Я генерирую число, такое как 00001 Мне нужно запустить его из базы данных
- Я получаю последнее из БД
- , затем 00001 + 1 = 00002
- сохранить в БД
, но при запросе в то же время в базе данных сохранить 00002 для 2 записей.
@Transactional
public List<Object> saveData(String data) {
//validate data
//Get Last Data
//set prepare data
//save data
int idLatest = Integer.parseInt(getLatest("7", "8"));
List<Object> objects = autoGenarateEntity(idLatest);
Repository.save(Object);
}
public String getLatest(String idFirst, String idSecond){
Optional<Object> running = Repository.findByBIdStartingWithOrderByBIdDesc(idFirst, idSecond).stream().findFirst();
if(running.isPresent()){
String bId =running.get();
return bId.getBId();
}else {
return "70000000";
}
}
public List<Object> autoGenarateEntity(int idLatest){
List<Object> objects = new ArrayList<>();
IntStream.range(1, 5 + 1).forEach(i -> {
Object obj = new Object();
obj.setBId(Integer.toString(idLatest + i));
obj.add(Object);
});
return objects;
}