猿问

标准 API:正确的日期格式

我正在制作一个能够根据某些标准过滤数据的搜索模块。


我已经做了以下:


public class SearchModuleBean implements Serializable{


    @PersistenceContext

    EntityManager entityManager;


    private Date departureDate;

    private Date returnDate;


    public List<Flight> search(){

        CriteriaBuilder cb = entityManager.getCriteriaBuilder();

        CriteriaQuery<Flight> criteriaQuery = cb.createQuery(Flight.class);

        Root<Flight> c = criteriaQuery.from(Flight.class);

        criteriaQuery.select(c).where(getPredicates(cb, c).toArray(new Predicate[0]));

        TypedQuery<Flight> query = entityManager.createQuery(criteriaQuery);

        System.out.println(query.getResultList());

        return query.getResultList();

    }


    private List<Predicate> getPredicates(CriteriaBuilder cb, Root<Flight> c) {

        List<Predicate> predicates = new ArrayList<>();

        predicates.add(cb.equal(c.get(Flight_.departureDate), departureDate));

        return predicates;

    }

}

此处不显示 Getters/Setters/Annotations 和导入。


我有一个 JSF 页面,其中填写了出发日期和到达日期。然后,在 getPredicates 方法中,我检查离开日期是否等于数据库中的日期。问题是他们有不同的格式,所以他从来没有找到任何东西。


红颜莎娜
浏览 218回答 1
1回答

ibeautiful

我不倾向于使用 Criteria API,可能还有另一种方式,但您可以使用 between 运算符,如下所示:private List<Predicate> getPredicates(CriteriaBuilder cb, Root<Flight> c,&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Date departureDate) {&nbsp; &nbsp; List<Predicate> predicates = new ArrayList<>();&nbsp; &nbsp; //remove time portion from specified date: now dd/mm/yy 00:00&nbsp; &nbsp; Date startDate = DateUtils.truncate(departureDate, Calendar.DATE);&nbsp; &nbsp; //new date with time initialized to 23:59:59&nbsp; &nbsp; Date endDate = DateUtils.addSeconds(DateUtils.addDays(startDate, 1), - 1);&nbsp; &nbsp; predicates.add(cb.between(c.get(Flight_.departureDate), startDate, endDate));&nbsp; &nbsp; return predicates;}DateUtils 是 Commons Lang 中的一个类:<dependency>&nbsp; &nbsp; <groupId>org.apache.commons</groupId>&nbsp; &nbsp; <artifactId>commons-lang3</artifactId>&nbsp; &nbsp; <version>3.8.1</version></dependency>
随时随地看视频慕课网APP

相关分类

Java
我要回答