2014-03-01 22 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