也許這個問題有點不尋常,我只是不明白Criteria是如何工作的(很確定,因爲我剛開始學習它),但現在我有點困惑由以下問題:JPA 2 Criteria API通過加入集合中的某個元素進行比較
我實現了一個過濾功能,應該可以通過一定的標準填充一組記錄。因此,讓我們假設有下面的實體:
@Entity
public class Car {
@OneToMany
private List<Deal> deals;
}
@Entity
public class Deal {
private Customer customer;
private DateTime dealDate;
}
現在我得到第一客戶名稱來過濾車的記錄。所以理論上它看起來像:
private static List<Predicate> buildPredicates(Root root, CriteriaQuery query,
CriteriaBuilder builder, CarFilter filter) {
List<Predicate> predicates = new ArrayList<>();
...
predicates.add(
builder.like(
root.get(Car_.deals.sortByDealDateComparator().first().customer.name),
filter.getFirstCustomerName()));
...
return predicates;
}
我相信,這些交易應先加入,然後可能在某種程度上通過一個子查詢或東西來分類的。但是,如果僅使用CriteriaQuery來獲得第一個比較結果,那麼也很有趣。
我想我對此有誤,所以任何建議都會受到歡迎。
非常令人困惑的問題。當你試圖通過名字獲得時,你爲什麼要關心排序交易?你得到的結果是什麼?你能指望什麼? –
我同意這可能會引起混淆。因此,讓我們假設交易沒有按照任何標準排序。而且我基本上希望從最早的日期交易中獲得客戶的名字。 –