JPA- Hibernate - значения идентификатора, сгенерированные из оператора Select - PullRequest
1 голос
/ 12 октября 2011

У меня проблемы с отображением устаревшей схемы базы данных с использованием аннотаций JPA.

Схема использует таблицу для генерации уникальных идентификаторов для большинства таблиц в БД - она ​​имеет структуру:

table_name
column_name
next_id
block_size

Чтобы получить новый уникальный идентификатор для вставки записи, вы запускаете команду выбора как:

SELECT next_id FROM tbl_next_id WHERE table_name = 'tbl_pets' and column_name = 'pet_id'

urrgh. Я знаю, что мог бы сделать это в чистом спящем режиме, используя генератор идентификаторов 'select' (если только я не придумал это) - кто-нибудь может порекомендовать лучший способ справиться с этим с аннотациями JPA?

Спасибо

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Нет ничего лучше, чем это:

@TableGenerator(name="petsgen",
      table="tbl_next_id",
      pkColumnName="table_name",
      pkColumnValue="tbl_pets",
      valueColumnName="next_id",
      allocationSize=1
)

@Id
@GeneratedValue(strategy=GenerationType.TABLE, generator="petsgen")

Конечно, не будет поддерживать комбинацию имени таблицы + имени столбца, но должно работать, пока для таблицы есть только один генератор.

1 голос
/ 12 октября 2011

TableGenerator делает что-то похожее, но не совсем.Нет поддержки для column_name и block_size.Может быть, вы можете расширить этот генератор, чтобы позаботиться о нем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...