簡體   English   中英

如何從JPA查詢中獲取結果,並按自定義條件過濾

[英]How to get result from JPA query, filtered by custom criteria

是否有機會通過似乎僅是Java函數的復雜自定義條件過濾查詢結果? 我希望此標准函數參與實體創建和將其放入結果集合之間。 例如,我有以下實體和查詢

@Entity
@NamedQueries{
    @NamedQuery(name="myquery",query="...")
}
class MyEntity{
    @Id
    public long id;

    @Column(name="NAME")
    public String name;

    @Column(name="description")
    public String description;
}

我可以執行myquery並指定分頁參數以獲取具有固定大小的結果集。 但是我想進行一些其他復雜的過濾,這些查詢無法表達。 如果我做一些查詢后處理功能,並用它來過濾查詢結果,我會破壞分頁不變的頁面大小。 這將不是很好和方便。

沒有簡單的方法可以做到這一點。 setFirstResult()setMaxResults()方法應用於生成的SQL查詢。 例如,在MySQL中,將LIMIT (10, 10)添加到查詢的where子句中。 因此,如果在執行查詢后過濾結果,則始終會得到較少的結果。

NamedQueries是實現此問題的錯誤方法。

您需要動態構建查詢。

EntityManager em=....
Query queryObject = em.createQuery(queryString);

要么

Query queryObject = em.createNativeQuery(queryString);

暫無
暫無

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

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