JPA:查询实体内部的可嵌入列表



我正试图从实体中的列表中"提取"基于某些标准的可嵌入类。借助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);

我只想从特定的邮局获得一份特定区号的邮递员名单。非常感谢您的帮助!:)


我想我差不多到了,但一直收到以下错误:

 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

相关内容

  • 没有找到相关文章

最新更新