Java 日期间隔内的动态查询
Dynamic Query in Java date interval
我使用 Liferay 6.2,
我尝试 select 元素与 DynamicQuery
.
我有一个包含 startDate
和 endDate
列的模型 Event
。
ClassLoader cl = Event.class.getClassLoader();
DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(Event.class, cl);
我想查询 startDate
和 endDate
之间 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));
这将找到给定 startDate
和 endDate
之间 完全 的所有事件。如果您想查找以某种方式 重叠 给定日期范围的所有事件,您将需要:
dynamicQuery.add(startDateProperty.lt(endDate));
dynamicQuery.add(endDateProperty.gt(startDate));
我使用 Liferay 6.2,
我尝试 select 元素与 DynamicQuery
.
我有一个包含 startDate
和 endDate
列的模型 Event
。
ClassLoader cl = Event.class.getClassLoader();
DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(Event.class, cl);
我想查询 startDate
和 endDate
之间 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));
这将找到给定 startDate
和 endDate
之间 完全 的所有事件。如果您想查找以某种方式 重叠 给定日期范围的所有事件,您将需要:
dynamicQuery.add(startDateProperty.lt(endDate));
dynamicQuery.add(endDateProperty.gt(startDate));