spring-data jpa repository按集合元素值查找

时间:2013-09-29 18:45:10

标签: java jpa spring-data

我正在开发适用于spring-data的小应用程序,我需要通过某些字段实现搜索,我无法弄清楚如何按集合字段值进行搜索。也许我的整个实体都错了。

我的目标是预订优惠和搜索天数我希望找到日期范围内免费的优惠。

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));

在这种情况下有任何建议吗?

谢谢!

0 个答案:

没有答案