我正在尝试选择一个A
实体B
,其中C
包含C.d
列表,其中值@Entity
class A {
@GeneratedValue
@Id
private Long id;
@Column(name="B")
@OneToOne(cascade=CascadeType.ALL)
@MapsId
private B b1;
}
@Entity
class B {
@GeneratedValue
@Id
private Long id;
@OneToMany(mappedBy="b2", cascade=CascadeType.ALL)
private List<C> cs;
}
@Entity
class C {
@GeneratedValue
@Id
private Long id;
@ManyToOne
@JoinColumn(name="B")
private B b2;
private String d;
}
必须与参数匹配。
我的实体看起来像这样:
SELECT entity FROM A entity WHERE entity.b1.cs.d = :d
我选择我的实体的天真方法如下:
GroupType groupType = groupTypeDao.findById(3);
GroupType groupType1 = groupTypeDao.findById(3);
System.out.println(groupType);
System.out.println(groupType1);
如何构建查询?
答案 0 :(得分:1)
应该是:
SELECT entity FROM A entity INNER JOIN entity.b1.cs CSList WHERE CSList.d = :d
阅读JPA中的INNER JOIN。
答案 1 :(得分:0)
试试这个
TypedQuery<A> query = em.createQuery("select b.a from B b inner join C c where c.d = :d",A.class);
List<A> a = query.getResultList();