我使用Liferay 6.2,
我尝试使用DynamicQuery
选择元素。
我有一个模型Event
,其中包含startDate
和endDate
列。
ClassLoader cl = Event.class.getClassLoader();
DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(Event.class, cl);
我想查询一下在startDate
和endDate
之间的表格行。
我该怎么做?
答案 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));
这将找到在给定的startDate
和endDate
之间完全的所有事件。如果要查找在给定日期范围内以某种方式重叠的所有事件,则将需要以下内容:
dynamicQuery.add(startDateProperty.lt(endDate));
dynamicQuery.add(endDateProperty.gt(startDate));