Java日期间隔中的动态查询

时间:2018-07-20 11:02:05

标签: java liferay-6

我使用Liferay 6.2, 我尝试使用DynamicQuery选择元素。

我有一个模型Event,其中包含startDateendDate列。

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

我想查询一下在startDateendDate之间的表格行。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您知道该功能

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