Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring数据jpa存储库按集合元素值查找_Java_Jpa_Spring Data - Fatal编程技术网

Java spring数据jpa存储库按集合元素值查找

Java spring数据jpa存储库按集合元素值查找,java,jpa,spring-data,Java,Jpa,Spring Data,我正在开发一个使用spring数据的小应用程序,我需要通过一些字段实现搜索,因为我不知道如何通过集合字段值进行搜索。也许我的整个实体都错了 我的目标是为优惠预留天数,在搜索中,我希望找到日期范围内的免费优惠 public class Offer { protected List<DbDate> reservedDbDates = new ArrayList<DbDate>();} public class DbDate { private Offer offer; pr

我正在开发一个使用spring数据的小应用程序,我需要通过一些字段实现搜索,因为我不知道如何通过集合字段值进行搜索。也许我的整个实体都错了

我的目标是为优惠预留天数,在搜索中,我希望找到日期范围内的免费优惠

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

public class DbDate {
private Offer offer;
private Date date;}
在这种情况下有什么建议吗


谢谢大家!

嗨。尝试以下操作:criteria.wherecriteriaBuilder.lessThanOrEqualTooffer.getdate,dateFrom;或者,如果jpql参与了,那么:……someObject.date问题是,我在offer中有一个日期列表:|使用sql,我想:选择count*from DbDate,其中date.offer=o和date.date>=:dateFrom>0查看一下
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));