Создать сущность и вернуть идентификатор
Используется 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
где эта оптимизация была реализована.