我正在尝试根据实体列表中的某些标准“提取”可嵌入类。在 JPQL 或 Criteria API 的帮助下。我不是这方面的专家,所以请帮助我。谷歌搜索了 4 个小时,但没有任何结果。
这些是类:
@Entity
public class PostOffice {
@Id
private Long id;
@ElementCollection(fetch=FetchType.LAZY)
@CollectionTable(joinColumns=@JoinColumn(name = "CARRIERID"))
private List<PostalCarrier> carriers;
}
@Embeddable
public class PostalCarrier {
@JoinColumn(name = "area")
private Area area;
}
@Entity
public class Area {
@Id
private int code;
}
所以,基本上我想要实现的是这样的。
TypedQuery<PostalCarrier> query = entityManager.createQuery("SELECT p.carriers FROM PostOffice p
WHERE p.id = ?1 AND p.carriers.area.code = ?2", PostalCarrier.class);
query.setParameter(1, postOfficeId);
query.setParameter(2, areaCode);
我只想从特定邮局获取特定区号的 PostalCarriers 列表。 任何帮助深表感谢! :)
我想我快到了,但不断收到以下错误:
Error compiling the query [SELECT h FROM PostOffice p INNER JOIN p.carriers h
WHERE p.id = ?1 AND h.area.code = ?2], line 1, column 71: unknown state or
association field [area] of class [com.test.PostalCarrier].
最佳答案
您必须加入 PostalCarrier。您无法访问集合中的属性。因此,postalcarrier.area
不正确。
select postalcarrier from PostOffice p
inner join p.carriers postalcarrier
where p.id = :postOfficeId
and postalcarrier.area.code = :areaCode
关于java - JPA:查询实体内的可嵌入列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9137610/