Получение значения AutoIncrement после сохранения - весна - PullRequest
0 голосов
/ 12 октября 2018

Я работаю с 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() также.Почему так происходит?(Не совершено?) Любой, кто знает какое-либо решение для этого, пожалуйста, дайте мне знать.Заранее спасибо.

1 Ответ

0 голосов
/ 12 октября 2018

в вашем updateRefNo Я не вижу сохранения или обновления вызова на Account сущности

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());

    // update in DB
    accountRepository.save(account);  or accountRepository.update(account);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...