Автоинкремент подал не возвращаемое значение (не первичный ключ) - пружинная загрузка JPA - PullRequest
0 голосов
/ 28 мая 2019

По моему требованию у меня есть поле с автоматическим приращением & , а не ключ .Мне нужно получить значение этого поля автоинкремента после вызова репозитория save ().

merchantEntity = merchantRepository.save(merchantEntity);
merchantEntity.getMerchId() // returns null

Но кое-как, как я не получаю значение автоинкремента, поданного, он возвращает ноль.Вот мой класс сущностей.

@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "id")
private Integer merchId;

Я попытался использовать несколько других обходных путей, таких как очистка сущности сразу после сохранения.Но результат тот же.

        merchantEntity = merchantRepository.saveAndFlush(entity); // still returns null

        merchantEntity = merchantRepository.save(entity);
        merchantRepository.flush();
        MerchantEntity toBeUpdatedMerchantEntity = 
                  merchantRepository.findOne(merchantEntity.getId()); // still returns null

Возможно ли добиться того, чего я ожидаю?Любая помощь высоко ценится.Спасибо

1 Ответ

0 голосов
/ 28 мая 2019

Единственный способ получить это автоматически увеличенное значение - обновить запись.

Поскольку JPA выбирает только первичный ключ, потому что после EntityManager.persist() должен быть установлен идентификатор.

Таким образом, вы должны перезагрузить запись с findOne() или EntityManager.refresh()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...