Я намерен вернуть клиенту вновь сохраненную сущность в том же бизнес-вызове, чтобы получить сгенерированный первичный ключ, необходимый для дальнейшей бизнес-логики. Повторный вызов метода поиска для поиска объекта по имени или некоторым известным атрибутам приведет к повторному обращению ко второму серверу, которого я бы хотел избежать (время - деньги ;-). Итак, я создал следующий метод:
public Entity persist(Entity entity) {
em.persist(entity);
em.flush();
em.refresh(entity);
// now the entity has an id
return entity;
}
Но теперь мне интересно, правильный ли это способ сделать это. Это как-то "странно". Спецификация JPA довольно четко об этом говорит: метод persist () EntityManager возвращает void - для меня это звучит как «выстрелил и забыл». Но мой клиент зависит от первичного ключа. Есть ли альтернативное решение описанному выше методу? Это лучшая практика в моем случае? Как вы думаете?