Java 日期间隔内的动态查询

Dynamic Query in Java date interval

我使用 Liferay 6.2, 我尝试 select 元素与 DynamicQuery.

我有一个包含 startDateendDate 列的模型 Event

ClassLoader cl = Event.class.getClassLoader();
DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(Event.class, cl);

我想查询 startDateendDate 之间 table 的 select 行。

我该怎么做?

你知道函数

  • Property.lt(Object)表示低于,
  • Property.le(Object)表示小于或等于,
  • Property.gt(Object) 表示 大于 并且,
  • Property.ge(Object) 表示 大于或等于 ?

您可以按如下方式使用这些知识:

Date startDate = ...;
Date endDate = ...;
DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(Event.class, Event.class.getClassLoader());
Property startDateProperty = PropertyFactoryUtil.forName("startDate");
Property endDateProperty = PropertyFactoryUtil.forName("endDate");
dynamicQuery.add(startDateProperty.ge(startDate));
dynamicQuery.add(endDateProperty.le(endDate));

这将找到给定 startDateendDate 之间 完全 的所有事件。如果您想查找以某种方式 重叠 给定日期范围的所有事件,您将需要:

dynamicQuery.add(startDateProperty.lt(endDate));
dynamicQuery.add(endDateProperty.gt(startDate));