Ну, хотя я не знаю, где на самом деле находится конец таблицы, у JPA есть много вариантов подключения генераторов идентификаторов.
Одним из распространенных вариантов является использование собственной таблицы, содержащей счетчик для каждой сущности, для которой требуется идентификатор (от http://download.oracle.com/docs/cd/B32110_01/web.1013/b28221/cmp30cfg001.htm).
@Id(generate=TABLE, generator="ADDRESS_TABLE_GENERATOR")
@TableGenerator(
name="ADDRESS_TABLE_GENERATOR",
tableName="EMPLOYEE_GENERATOR_TABLE",
pkColumnValue="ADDRESS_SEQ"
)
@Column(name="ADDRESS_ID")
public Integer getId() {
return id;
}
... другие стратегии "Генератора", которые нужно гуглить ...
EDIT
Смею сослаться на @a_horse_with_no_name, поскольку он говорит, что не знает о JPA. Если вы хотите использовать собственные механизмы, такие как sequence (которые доступны не в каждой БД), вы можете объявить такой генератор и в JPA.
Я не знаю, с какими проблемами он столкнулся при использовании табличного подхода - я знаю, что крупные установки успешно работают. Но в любом случае, это зависит от множества факторов, помимо масштабируемости, например, если вы хотите, чтобы это было переносимо и т. Д. Просто найдите различные стратегии и выберите подходящую.