2012-03-23 65 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; 
} 

随时纠正注释