Hibernate - 从 ManyToMany 关系访问字段
Hibernate - Accessing fields from a ManyToMany relation
我有一个 ManyToMany table,我想进行这样的查询:
"select e.manytomany.fieldName from Entity e"
我不能 select ManyToMany table 的字段,唯一的可能性是 select table(如 "select e.manytomany from Entity e")给我一个 Set<>.
有什么方法可以让我进行这样的查询吗?
据我所知,您想完成一个连接条件。
类甲乙:
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"
我有一个 ManyToMany table,我想进行这样的查询:
"select e.manytomany.fieldName from Entity e"
我不能 select ManyToMany table 的字段,唯一的可能性是 select table(如 "select e.manytomany from Entity e")给我一个 Set<>.
有什么方法可以让我进行这样的查询吗?
据我所知,您想完成一个连接条件。
类甲乙:
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"