2014-03-01 26 views
1

的使用情况是这样的:JPA/Hibernate的扁平化映射(只是想孙子,并跳过孩子)

有一个现有的数据库,在那里

一个有许多烧烤

乙有很多铯

但我并不真的需要Bs,我只想知道A包含多少Cs。

所以我有点需要拼合所有的CS里包含在一个A的所有B类,并把它们放在A.

在另一个词,我只想让孙子和跳过儿童。

有没有办法做到这一点,而不创建一个B的实体?

回答

5

这应该使用带有表-B一个@OneToMany协会评为@JoinTable可能:

@Entity 
@Table(name="TABLE_A") 
public class A { 

    @OneToMany 
    @JoinTable(
      name="TABLE_B", 
      joinColumns = @JoinColumn(name="A_ID"), 
      inverseJoinColumns = @JoinColumn(name="B_ID") 
    ) 
    public Set<C> cs; 
} 

@Entity 
@Table(name="TABLE_C") 
public class C { 

} 

这样实体A是directy链接到实体C和B的仅仅用作连接表。

+0

该问题指定“有没有办法做到这一点,而无需为B创建实体?” – CuiPengFei

+1

@CuiPengFei,我更新了使用连接表的答案。这是你在哪里寻找的?如果只是一个计数,这也可以用JPQL –

+0

完成,我会测试一下,谢谢 – CuiPengFei