【问题标题】:Dynamic Query in Java date intervalJava 日期间隔中的动态查询
【发布时间】:2018-12-28 16:18:36
【问题描述】:

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

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

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

我想进行查询以选择startDateendDate 之间的表行。

我该怎么做?

【问题讨论】:

标签: java liferay-6


【解决方案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));

【讨论】:

    猜你喜欢
    • 2018-10-09
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 2011-07-20
    • 1970-01-01
    • 2015-08-10
    相关资源
    最近更新 更多