2012-01-23 8 views
1

私はHibernate 3.6を使用していますが、可能であればJPAアノテーションに固執することをお勧めします。行/列の値にJPA/Hibernateマップを使用する

私はidを持ち、他の単純なプロパティ(名前、説明など)を持つ親エンティティを持っていますが、単純な例ではStringの子の2次元コレクションを持ちます。

理想的には私はParentEntityは次のようになりたいのですが:私は変更する柔軟性、ある程度の量を持っている

GridItems 
------------ 
grid_id (int,FK to grid) 
column_index (int) 
row_index (int) 
value (varchar) 

:私のデータベースで

class ParentEntity { 
    @Id 
    private Long id; 
.... 
    @???? 
    // first Long should be column_index, second Long should be row_index 
    private Map<Long,Map<Long,String>> gridOfStrings; 
} 

を、私のgridOfStringは、次のように表されますスキーマ、またはエンティティが動作する方法。

Hibernateに私のために魔法をさせる最も明白な方法は何ですか?私は、文字列の列の列にエンティティのリストのマッピング/変換のロジックを記述する必要がないようにしたい。

代替アプローチ

私はわずか2つのまたは3の列を持っているし、彼らは地図を分ける作ってあげると仮定することができます。私はどのように休止状態のフィルタをそれぞれの参加を持っているか分からない。エンティティは、このようになります

@??? 
//rows where column_index=1 
private Map<Long,String> column1; 
... 
private Map<Long,String> column2; 
... 
private Map<Long,String> column3; 

答えて

0

Hibernateはあなたのためにこれを行うための最も簡単な方法は、文字列のリストを持つオブジェクトにあなたの「グリッド」を破る、そしてあなたのParentEntityことであろうそれらのオブジェクトのリストを持ちます。 Hibernateはそれを簡単にマップすることができます。もしあなたが好きであれば、思い通りに構造をフェッチすることができます。

+0

注釈はどのように見えますか?それはテーブルがないのに、「列」オブジェクトが依然として実体になっていますか? – Andrew

+0

それに応じてテーブルレイアウトを調整する必要があり、アノテーションは他の1対多の関係と同じようになります。 – cdeszaq

関連する問題