Hibernate - 从多对多关系访问字段
Posted
技术标签:
【中文标题】Hibernate - 从多对多关系访问字段【英文标题】:Hibernate - Accessing fields from a ManyToMany relation 【发布时间】:2016-05-12 13:10:11 【问题描述】:我有一个 ManyToMany 表,我想进行如下查询:
“从实体 e 中选择 e.manytomany.fieldName”
我无法选择 ManyToMany 表的字段,唯一的可能是选择表(例如“从实体 e 中选择 e.manytomany”),它给了我一个 Set。
有什么方法可以让我做这样的查询吗?
【问题讨论】:
您期望什么返回类型?如果您有@ManyToMany
,您必须收到Collection
。
它返回 Set据我所知,您想要完成一个连接条件。
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>
of "someBInstance.a.field"
【讨论】:
谢谢...我上周找到了解决方案,但您回答的决心仍然很重要... 很高兴您找到了解决方案。谢谢我的第一个接受的答案=)以上是关于Hibernate - 从多对多关系访问字段的主要内容,如果未能解决你的问题,请参考以下文章