JPA/Hibernate拼合映射(只想得到孙子并跳过孩子)

Cui*_*崔鹏飞 1 java orm hibernate jpa

用例是这样的:

有一个现有的数据库

A有很多Bs

B有很多Cs

但我真的不需要B,我只想知道A包含多少个Cs.

所以我需要在A中包含的所有B中展平所有C,并将它们放在A中.

换句话说,我只是想让孙子们跳过孩子们.

有没有办法在不为B创建实体的情况下执行此操作?

Ang*_*ity 5

这应该可以使用@OneToMany与TABLE_B 的关联作为@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 {

}
Run Code Online (Sandbox Code Playgroud)

这样,实体A直接链接到实体C,并且B仅用作连接表.