Вы можете попробовать это, если используете JPA 2.0,
entityManagerFactory.getPersistenceUnitUtil().getIdentifier(attendance);
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Сам никогда не пробовал.
В противном случае вы можете изменить свою стратегию генерации идентификаторов на что-то, что может дать вам id
перед сохранением сущности. Например, попробуйте использовать генератор таблиц для генерации id
s. Здесь я нашел пример: Использовать генератор таблиц для генерации идентификатора . Тогда вы сможете прочитать значение из этой таблицы напрямую. Возможно, вам не удастся обработать это автоматически с помощью @Id
, в итоге вы сами подсчитаете следующий id
. Следовательно, вы можете использовать ту же идею, но выполнять всю работу самостоятельно и установить id
при создании операции, и не позволять JPA генерировать ее.
Или вы можете использовать sequence
, если поддерживается. В случае sequence
вам также необходимо получить следующее значение самостоятельно и установить его вручную. Будьте готовы потерять пропущенные id
s в случае отсутствия вставки или справиться с этим каким-либо образом.
Или ты в порядке с тем, что делаешь. Просто позаботься об атомности. Либо у вас может не быть нескольких одновременно работающих транзакций.