3

コレクションフィールド値で検索する方法がわからないため、いくつかのフィールドで検索を実装する必要があります。たぶん、私のエンティティ全体が間違っています。

私の目標は、オファーの予約日を設定することです。検索では、日付範囲内で無料のオファーを見つけたいと考えています。

public class Offer {
protected List<DbDate> reservedDbDates = new ArrayList<DbDate>();}

public class DbDate {
private Offer offer;
private Date date;}

オファーで日付フィールドを処理する方法の提案があるかもしれませんか?

とにかく、私はこの方法で検索を実装しようとしています:

public class OfferSpecifications {
//http://www.zenjava.com/2012/03/20/search-like-you-mean-it/
public static Specification<Offer> searchAllOffers(final Float priceFrom, final Float priceTo, final Date dateFrom) {
    return new Specification<Offer>() {
        public Predicate toPredicate(Root offer, CriteriaQuery query, CriteriaBuilder builder) {
            Predicate predicate = builder.conjunction();
            if (priceFrom > 0) {
                predicate.getExpressions().add(builder.greaterThanOrEqualTo(offer.get("price"), priceFrom));
            }

            if (priceTo > 0) {
                predicate.getExpressions().add(builder.lessThanOrEqualTo(offer.get("price"), priceTo));
            }


            if (dateFrom != null) {
               ????
            }

            return predicate;
        }
    };
}

}

そして、ここでそれを使用します:

offerRepository.findAll(OfferSpecifications.searchAllOffers(priceFrom, priceTo, dateFrom));

この場合、何か提案はありますか?

ありがとうございました!

4

0 に答える 0