Hibernate - 从ManyToMany关系访问字段

时间:2016-02-03 11:06:40

标签: hibernate orm many-to-many jpql

我有一个ManyToMany表,我想做一个这样的查询:

“从实体e中选择e.manytomany.fieldName”

我无法选择ManyToMany表的字段,唯一的可能是选择表格(例如“从实体e中选择e.manytomany”),这会给我一个Set<>。

我有什么方法可以像这样进行查询吗?

1 个答案:

答案 0 :(得分:1)

从我所看到的,你想要完成一个连接条件。

课程A& B:

public class A {

    @Id
    private String id;

    @ManyToMany
    @JoinTable(name="a_b", joinColumns={@JoinColumn(name="a_id")}, inverseJoinColumns={@JoinColumn(name="b_id")})
    private Set<B> b;

    private String field;
}

public class B {

    @Id
    private String id;

    @ManyToMany(mappedBy = "b")
    private Set<A> a;
}

查询:

TypedQuery<String> query = em.createQuery("SELECT a.field FROM A a JOIN B b ON a MEMBER OF b.a AND b = :b", String.class);
query.setParameter("b", someBInstance);

会产生List<String> "someBInstance.a.field"