Создать сущность и вернуть идентификатор

Используется Open JPA 2.0, а база данных - DB2 9.7. Я хотел бы создать сущность, которая включает в себя идентификатор, который является первичным ключом, и автоматически сгенерированный столбец идентификаторов, и после создания сущности мне нужно отобразить сгенерированный идентификатор. Для этого после сохранения сущности я вызываю entity.getId(). В базе данных, я вижу ниже запрос выполняется

select ID from final table
     (INSERT INTO WEB.USER (NAME, LOCATION) VALUES (?, ?))

Есть ли альтернативный / лучший способ создать сущность и вернуть сгенерированный идентификатор? Я хотел бы избежать "Select ID from final table", как ожидается, это повлияет на производительность.

2 ответа

Решение

Я использую последовательность базы данных (@SequenceGenerator), чтобы избежать "выбрать идентификатор из финальной таблицы". Это работало нормально и @TableGenerator также бы разобрался в этом вопросе.

Это способ извлечения автоматически сгенерированного идентификатора из DB2, и вы ничего не можете с этим поделать. Другие базы данных часто требуют дополнительных SQL-запросов, так что на самом деле это даже лучше с DB2, которая немедленно возвращает ID. Я не думаю, что есть более быстрый способ сделать это.

Проверять, выписываться OPENJPA-736 где эта оптимизация была реализована.

Другие вопросы по тегам