2

私の簡略化されたエンティティシナリオは次のとおりです。

PERSONは、特定のROLE(あくび)のCOMPANYに関連付けられています。

私の最初の考えは、PERSONとCOMPANYの間にManyToMany関係を構成することでした。ただし、明らかに、その方法でROLEテーブルにROLEのタイプを含めることはできません(別のフィールドとして2つの外部キー)。

これを行う正しい方法は、2つのOneToMany関係を使用し、ROLEをそれ自体のエンティティとして含めることです(stackoverflowですでに回答済み)。

しかし、これは私が立ち往生しているところです:私はhtmlフォームを使用して会社に人を追加し、適切な役割を選択します、これをデータベースに保存する方法またはそれ以上:Hibernateに保存するように指示する方法。人にはリストがあり、会社にもリストがあります。役割には人と会社があります。彼らは途中でどのように会いますか?だから基本的に私が求めているのは:

会社の役割を持つ個人を1つのステップで保存できるように、正確なHibernateマッピング構成はどのようになっていますか?

4

1 に答える 1

2

カスケードとテーブル継承を見てください。たとえば、以下のコードは3つのテーブルを表します。Companyテーブル、CATGを含むRoleテーブル、およびUserテーブル。ロールテーブルは単一テーブル継承を使用し、CATGはHibernateによって管理され、HibernateはCATG列の値とマッピングに基づいて適切なクラスを作成します。また、カスケードは、ユーザーと同時にロールを挿入します。

@Table( name = "USER" )
Public User
{


    @ManyToOne( fetch = FetchType.LAZY )
    @JoinColumn(  cascade = CascadeType.ALL, name="ROLE_NAME" )
    private CompanyRole   role;

}

@Inheritance( strategy = InheritanceType.SINGLE_TABLE )
@DiscriminatorColumn( name="CATG", discriminatorType=DiscriminatorType.STRING )
@Table( name = "Role" )
public Role
{

}

@DiscriminatorValue( "CMPY_ROLE" )
public CompanyRole extends Role
{

    private Company company
}

@Table( name = "COMPANY" )
Public Company 
{
}
于 2009-04-23T17:58:12.367 に答える