Я работаю с spring boot 2 (hibernate,jpa) and mysql
.Мне нужно уникальное, автоматическое увеличение пользовательской ссылки нет.Eg : **18/10/5** (Here, 18 -is year, 10- is month, 5 - auto increment field).
Стратегия, которую я использовал,
Создать поле с автоматическим приращением.Получить значение автоинкремента после сохранения и объединения с помощью yy/MM/
.
Я удалил нежелательные аннотации для простоты.
Класс модели
@Entity
@Table(name="account")
public class Account{
@Id
private String id;
@GeneratedValue(strategy=GenerationType.AUTO)
private Long autoIncrement;
String refNo;
//Other fields, Constructors, Getters And Setters
}
Затем в контроллере сначала сохраняю, потом получаю идентификатор сохраненного объекта и пытаюсь обновить
Класс контроллера
@RestController
@RequestMapping("/account")
public class AccountController {
@PostMapping("/save")
public ModelAndView saveAccount(@ModelAttribute("account") Account account){
//few codes
accountService.save(account) //Saving
accountService.updateRefNo(account.getId()) //try to update
}
}
Класс обслуживания
@Service
@Transactional
public class AccountServiceImpl implements AccountService{
@Autowired
AccountRepository accountRepository;
//Few methods
public void updateRefNo(String id) {
Account account=findById(id); // return the object
String year = // getting year
String month = //getting month
account.setRefNo(year+"/"+month+"/"+account.getAutoIncrement());
}
}
Данные сохранены.Когда я пытаюсь обновить, account.getAutoIncrement()
возвращает null , но он сохраняется в базе данных.Я пробовал saveAndFlush()
также.Почему так происходит?(Не совершено?) Любой, кто знает какое-либо решение для этого, пожалуйста, дайте мне знать.Заранее спасибо.