I use Liferay 6.2,
I try to select elements with a DynamicQuery
.
I have a model Event
that contains startDate
and endDate
columns.
ClassLoader cl = Event.class.getClassLoader();
DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(Event.class, cl);
I want to make a query to select rows of the table between startDate
and endDate
.
How i can do that?
You know that the function
Property.lt(Object)
means lower than,Property.le(Object)
means lower or equals,Property.gt(Object)
means greater than and,Property.ge(Object)
means greater or equals?You can use this knowledge as follows:
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));
This will find all events, that are completely between a given startDate
and endDate
. If you want to find all events that somehow overlap a given date range, you will need this:
dynamicQuery.add(startDateProperty.lt(endDate));
dynamicQuery.add(endDateProperty.gt(startDate));