2011-06-29 12 views
1

私は2つのエンティティ、役割許可、ヒロアルゴリズムとデータベースと適切にセットアップID生成におけるそのテーブルとのそれぞれを有しています。これは正常に動作します。しかし、データベースにはもう1つのテーブルROLE_PERMISSION_ASSIGNMENTがあります。これは単に、前述の2つのテーブルへの外部キーを含み、エンティティを結合します。この表には、アプリケーション内にエンティティの対応がありません。NHibernateは、ハイローおよび多対多の関連

役割エンティティのマッピングは、次のようになります。

public class RoleMap : ClassMap<Role> 
{ 
    public RoleMap() 
    { 
     Table("\"ROLE\""); 
     LazyLoad();    
     Id(x => x.Id, "id").GeneratedBy.HiLo("hilo", "hilo_role", "50");   
     Map(x => x.Name).Column("name"); 
     HasManyToMany<Permission>(x => x.Permissions) 
      .Table("\"ROLE_PERMISSION_ASSIGNMENT\"") 
      .ParentKeyColumn("fk_id_role") 
      .ChildKeyColumn("fk_id_permission") 
      .Cascade.None(); 
    } 
} 

私はROLE_PERMISSION_ASSIGNMENTテーブルのエンティティを持っていないので、私はそのIDが生成されるべき方法を指定するため、することはできませんロール(一部の文字がパーミッション)をDBに保存すると、ROLE_PERMISSION_ASSIGNMENTに対応するエントリが作成されますが、プライマリキーが提供されないため失敗します。

HiLoアルゴリズムでもROLE_PERMISSION_ASSIGNMENTのIDを生成するようにNHibernateに指示する方法はありますか?

ありがとうございました。

+0

通常、関連テーブルには複合PKとしても使用されるフィールドが2つしかありません。なぜあなたはそれのための別の種類のIDが必要なのか説明できますか? –

+0

ありがとうございましたsJhonny、そうですが、アソシエーションテーブルにIDを追加する必要はありません。 – twoflower

答えて

0

あなたは、私は流暢がそれをサポートしているとは思わない

http://www.nhforge.org/doc/nh/en/index.html#collections-idbagを参照)を正確に何をしたいんれ、idbagとその関連付けをマップする必要があります。そのためにXMLマッピングを混在させる必要があります。

+0

ディエゴありがとう!これは本当に私がやろうとしていたことを成し遂げます。一方、sJhonnyのコメントを読んだ後、私はもう一度考え直し、おそらくこのような種類のテーブルに合成IDが必要ないと気付きました。あなたの答えはとても役に立ちます。 – twoflower

関連する問題