Устаревшая таблица Oracle без хорошего PK: Как Быть в спящем режиме?

Spring и В спящем режиме, действительно предназначаются, чтобы сделать две разных вещи. Spring является прежде всего контейнером инверсии управления и подсистемой конфигурации, в то время как В спящем режиме, привязка базы данных и ленивый механизм загрузки. Если Вы не хотите вводить набор нового материала в Ваш код, палку с Spring и запросами самокрутки или использованием iBatis, чтобы сделать намного более простую привязку базы данных.

7
задан wallenborn 5 October 2009 в 09:38
поделиться

2 ответа

Вы не хотите использовать ROWID в качестве первичного ключа, потому что не гарантируется его стабильность в течение всего времени существования строки.

Лучше всего добавить синтетический ключ. Используйте триггер, чтобы заполнить столбец значением последовательности.

Вы немного расплывчаты в отношении аспекта наследия, поэтому трудно сказать, каковы будут последствия. Добавление столбца приведет к поломке любого оператора вставки, в котором явно не указаны целевые столбцы. Он также может нарушить любые запросы SELECT * (если они не выбраны в переменную, объявленную с использованием ключевого слова % ROWTYPE ]. Но вам не нужно будет изменять какое-либо другое приложение, поэтому оно будет первичный ключ вместо существующих столбцов - если вы действительно этого не хотите.

7
ответ дан 6 December 2019 в 21:16
поделиться

Я бы добавил суррогатный ключ с поддерживающей последовательностью. Это не изменит никакой вашей устаревшей семантики, и Hibernate будет удовлетворен.

Просто любопытно - если в индексе есть имя, фамилия и дата найма, почему ваш составной ключ исключает дату найма? Я ожидал увидеть все поля индекса в составном ключе.

5
ответ дан 6 December 2019 в 21:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: