/ / Hibernate Many для багатьох на багатьох, щоб - hibernate, анотації, багато-до-багато, композитний-первинний ключ

Зима від багатьох до багатьох з багатьох - hibernate, анотації, множина до багатьох, composite-primary-key

Я намагаюся зіставити існуючу базу даних з Hibernate за допомогою анотацій. Проблема полягає в наступному.

"Організація" і "Організація_роли" має багато відносин, які вирішуються в Таблиця "organization_has_roles" використовує два первинних ключа в якості складеного первинного ключа в таблиці приєднання.

Далі є таблиця "users". Користувачі можуть мати одну роль у декількох організаціях. Це знову вирішується в таблиці приєднання з іменем "users_has_organizations_and_role", яка має складений первинний ключ "user_id", "organization_id" і "organization_role_id" і унікальний_індекс на "user_id" і "organization_id".

"Users_has_organizations_and_role" посилається на композитний первинний ключ "organization_has_roles" (organization_id, organization_role_id) і таблицю користувачів (user_id)

Я не зміг знайти прикладів з цього приводу.

Чи можна це відобразити. Які анотації я повинен використовувати і як?

Я використовую Hibernate 4, хоча це не має значення.

Відповіді:

1 для відповіді № 1

Основна проблема цього підходу полягає в тому, що у вас є невідповідність невідповідності ORM: у вашій базі даних є об'єкт (organization_has_roles), що перекладається як відношення в OO. Оскільки цей зв'язок не є суб'єктом, і не має @Id, на нього не можна посилатися в ще одну сутність.

Рішенням є зіставлення об'єкта бази даних organization_has_roles в об'єкт JPA / Hibernate, або з комбінованим ключем, або з синтетичним ключем (що завгодно). Потім ви можете звернутися до цієї особи у вашому User модель