1

アノテーションを使用して既存のデータベースをHibernateにマップしようとしています。問題は次のとおりです。

'organization'と'organization_roles'には多対多の関係があり、結合テーブルの複合主キーとして2つの主キーを使用してテーブル'organization_has_roles'で解決されます。

次に、「users」テーブルがあります。ユーザーは、複数の組織で1つの役割を持つことができます。これは、「user_id」、「organization_id」、「organization_role_id」の複合主キーと「user_id」および「organization_id」のunique_indexを持つ「users_has_organizations_and_role」という名前の結合テーブルで再び解決されます。

'users_has_organizations_and_role'は、'organization_has_roles'複合主キー(organization_id、organization_role_id)およびusersテーブル(user_id)を参照します

私はこの問題でうまくいった例を見つけることができませんでした。

これをマッピングすることは可能ですか。どの注釈をどのように使用する必要がありますか?

私はHibernate4を使用していますが、問題ではないかもしれません。

4

1 に答える 1

1

このアプローチの主な問題は、マップできないORMの不一致があることです。データベース(organization_has_roles)にエンティティがあり、これがOOの関係として変換されます。この関係はエンティティではなく@Id、も持たないため、さらに別のエンティティを参照することはできません。

解決策は、データベースエンティティorganization_has_rolesを、複合キーまたは合成キー(任意のキー)を使用してJPA/Hibernateエンティティにマップすることです。Userその後、モデルでこのエンティティを参照できます。

于 2012-07-10T08:55:38.833 に答える