簡體   English   中英

JPA:在實體內查詢可嵌入List

[英]JPA: Query an embeddable List inside an entity

我試圖根據實體列表中的一些標准“提取”可嵌入類。 在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);

我只想從特定的PostOffice獲取特定區域代碼的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM