Hibernate @ManyToOne в несовместимой базе данных - PullRequest
2 голосов
/ 05 июля 2010

Допустим, у меня есть две таблицы: сотрудник и отдел, где у emp есть ключ @ManyToOne для отдела. Теперь я хочу иметь возможность удалять строки из таблицы dept, но сохранять записи emp, указывающие на нее; в основном сохраняя отношения, чтобы при повторном создании таблицы dept отношения восстанавливались. (Это на самом деле происходит в нашей системе, но не с гибернацией, а с использованием составных, воспроизводимых ключей).

Вопрос заключается в следующем: произойдет ли сбой гибернации в отношениях @ManyToOne, которые, похоже, присутствуют, но не имеют записи в @One части отношений? (в основном несовместимое состояние базы данных).

Я, вероятно, должен решить эту проблему, удалив отношение @ManyToOne и просто сопоставив внешний ключ со строкой или около того. Мне просто интересно, сможем ли мы осуществить это, чтобы оставить отношения на месте ...

1 Ответ

1 голос
/ 05 июля 2010

Теперь я хочу иметь возможность удалять строки из таблицы dept, но сохранять записи emp, указывающие на нее;

Тогда вам придется удалять их логически, а не физически (а ограничения FK фактически не позволят вам удалять отделы).

Произойдет ли сбой гибернации при связях @ManyToOne, которые, по-видимому, существуют, но без записи в @One-части отношений?

Разве у вас нет ссылочной целостности (см. Выше)? Но допустим, вы нарушили целостность ... Возможно, вы сможете загрузить сотрудников, но в какой-то момент произойдет сбой (при загрузке ассоциации, если не раньше).

Я, вероятно, должен решить эту проблему, удалив отношение @ManyToOne и просто сопоставив внешний ключ со строкой или около того. Мне просто интересно, сможем ли мы осуществить это, чтобы оставить отношения на месте ..

Удалить отделы логически.

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