2012-03-23 79 views
0

我有一個休眠問題。我的表的形式爲:Hibernate映射,其中類在一個表上有多行

ID,日期
- -----
測試,1/1/2012
測試,2012年8月1日
測試,29/3/2012
TEST2,2012年7月5日
TEST2,1/1/2012

主鍵是這兩列的複合物。

此映射到形式的對象:

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

例如

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

我將如何詮釋描述這個映射的對象?我可以看到,如果我有兩張桌子,一張桌子上有一排id,然後把一張關鍵字放入另一張桌子上,但沒有放在一張桌子上,我會怎麼做。

回答

0

我有類似的情況,它是hackish。我並不熟悉註釋,但是我們的想法是製作一個映射到一行的僞造實體,然後將集合映射到同一張表。

@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; 
} 

隨時糾正註釋