2017-05-04 126 views
0

我已經對本文檔有一個很簡單的問題,使用標準API創建查詢:documentation標準API:使用標準API創建查詢文檔

在這裏,你可以閱讀CriteriaBuilder接口部分的表達方法以下有關and方法在這一部分:表35-3複合謂語方法在CriteriaBuilder接口 和方法使用例子:

CriteriaQuery<Pet> cq = cb.createQuery(Pet.class); 
Root<Pet> pet = cq.from(Pet.class); 
cq.where(cb.equal(pet.get(Pet_.name), "Fido") 
    .and(cb.equal(pet.get(Pet_.color), "brown")) 

但實際上,這並不是因爲這裏的where方法後,你可以工作不叫.and() ... 的正確用法是:

CriteriaQuery<BookEntity> cq = cb.createQuery(Pet.class); 
Root<Pet> pet = cq.from(Pet.class); 
cq.where(cb.and(cb.equal(pet.get(Pet_.name), "Fido"), 
       cb.equal(pet.get(Pet_.color), "brown"))); 

那麼這是爲什麼?也許有一些版本差異? 或者,也許這只是文檔中的一些錯誤,但在這種情況下,我會留下這個用法的一個很好的例子。

+0

「教程」是錯誤的,並且還有其他錯誤。使用其中一個JPA提供商提供的文檔,或者參考JPA規範 –

+0

謝謝你的回答尼爾!其實我必須在我的作業中使用這個API。我們無法使用任何供應商特定解決方案。但再次感謝。實際上,您是否知道這個Criteria-Api的指南或教程或文檔,它沒有錯誤,並且不僅提供供應商特定的解決方案? – F3R1

+0

JPA規範和javadocs是權威性指南。除此之外,這一個http://www.datanucleus.org:15080/products/accessplatform_5_1/jpa/query.html#criteria –

回答

1

Oracle「教程」有各種各樣的錯誤,那不過是一個錯誤。

關於JPA Criteria可能的權威性指南是JPA規範和javadoc。除此之外,還要使用供應商自己的文檔,因爲它們都應該涵蓋標準處理(以及他們自己的擴展,希望能夠清楚他們自己的擴展是什麼)。一個這樣的例子是this one from DataNucleus JPA

+0

謝謝你的回答! – F3R1

+0

你是否知道querydsl的任何教程或文檔 – SpringUser