0
我是JPA CriteriaBuilder
的新手,並且遇到泛型錯誤,我似乎無法看到JPA Criteria Queries理解或工作我的方式。我想下面的查詢翻譯成標準的查詢在Spring數據倉庫的使用方法:JPA CriteriaBuilder泛型錯誤:CriteriaQuery <capture#2 of?>不適用於參數(表達式<Long>)
select * from User where id = (select max(id) from User);
我試着做下面根據我在https://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/Criteria看到代碼,但它給編譯時錯誤:
new Specification<User>() {
@Override
public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
root = query.from(User.class);
cb.greatest(root.<Long>get("id"))
query.select(cb.max(root.<Long>get("id")));
// TODO Auto-generated method stub
return null;
}
});
當然,我只是意識到,一旦我弄清楚如何指定查詢,我甚至不知道如何將其轉換成一個謂語無論是。
我完全脫離了這裏嗎?如何將上面的SQL轉換爲我可以使用的Predicate?
我嘗試一些非常相似('謂詞p = cb.equal(root.get( 「ID」),CB最大(根。獲得(「id」)))'),但我得到的錯誤:集合函數「MAX(USER1_.ID)」 –
我無法使用編輯解決方法,這給你的用戶最高的ID背部。但我認爲,這不是最好的解決方案,並不等同於給定的查詢。但它的工作;) – pL4Gu33
謝謝。我也曾經剽竊過同樣的東西。 :)但希望有一個更好的方式來使用cb.max()或cb.greatest() –