2012-03-23 24 views
0

私は休止状態の質問をしています。私のテーブルの形式は次のとおりです。クラスが1つのテーブルに複数の行を持つHibernateマッピング

ID、日付
- -----
テスト、2012年1月1日
テスト、2012年8月1日
テスト、29/3/2012
TEST2、2012年7月5日
TEST2、2012年1月1日

主キーは、両方のこれらの列の複合体です。

これは、フォームのオブジェクトにマップ:

class Coll 
{ 
    String id; 
    List<Date> entries; 
} 

例えば

aColl 
{ 
    id = test; 
    entries = { 1/1/2012, 8/1/2012, 29/3/2012 } 
} 

このマッピングを記述するためにオブジェクトに注釈を付ける方法を教えてください。私は2つのテーブルがある場合、私はそれを行う方法を見ることができますが、IDの行を1つは、エントリを持つ別のテーブルへのキーが1つのテーブル上のすべてではありません。

答えて

0

私は同様の状況を抱えていました。注釈に慣れ親しんでいるわけではありませんが、アイデアは1つの行にマップしてコレクションを同じテーブルにマップする偽のエンティティを作成することです。

@Table("MyTable") 
@Readonly or @SqlInsert("<noop which returns rowcount == 1 eg insert into temp table>" 
@SqlWhere("Date = (SELECT MIN(t.Date) FROM MyTable t WHERE t.Id = Id)") 
class Coll 
{ 
    @Column(name="id") 
    String id; 

    @ElementCollection 
    @Table("MyTable") 
    @Column(name="id") 
    @Element(column="Date") 
    @Cascade(AllDeleteOrphan) 
    @Lazy(false) 
    List<Date> entries; 
} 

注釈を修正すること自由に感じ

関連する問題