带日期条件的动态查询

时间:2016-01-08 06:47:50

标签: liferay criteria dynamicquery

我正在尝试使用动态查询实现搜索查询 我创建了像这样的动态查询

DynamicQuery dynamicQuery=DynamicQueryFactoryUtil.forClass(OrderSubscription.class,PortletClassLoaderUtil.getClassLoader());
DynamicQuery dynamicQueryCount=DynamicQueryFactoryUtil.forClass(OrderSubscription.class,PortletClassLoaderUtil.getClassLoader());

Criterion criterion = RestrictionsFactoryUtil.like(DBConstants.OrderSubscription.ORDERNO, StringPool.PERCENT+searchKeyword+StringPool.PERCENT);
criterion = RestrictionsFactoryUtil.or(criterion, RestrictionsFactoryUtil.like(DBConstants.OrderSubscription.STATUS, StringPool.PERCENT+searchKeyword+StringPool.PERCENT));
criterion = RestrictionsFactoryUtil.or(criterion, RestrictionsFactoryUtil.like(DBConstants.OrderSubscription.ORDERDATE, StringPool.PERCENT+searchKeyword+StringPool.PERCENT));
criterion = RestrictionsFactoryUtil.or(criterion, RestrictionsFactoryUtil.like(DBConstants.OrderSubscription.PAYMENTSTATUS, StringPool.PERCENT+searchKeyword+StringPool.PERCENT));
criterion = RestrictionsFactoryUtil.or(criterion, RestrictionsFactoryUtil.like(DBConstants.OrderSubscription.ORDERSTATUS, StringPool.PERCENT+searchKeyword+StringPool.PERCENT));
criterion = RestrictionsFactoryUtil.or(criterion, RestrictionsFactoryUtil.like(DBConstants.OrderSubscription.ORDERID, StringPool.PERCENT+searchKeyword+StringPool.PERCENT));
criterion = RestrictionsFactoryUtil.or(criterion, RestrictionsFactoryUtil.like(DBConstants.OrderSubscription.PAYMENTTRANSACTIONTYPE, StringPool.PERCENT+searchKeyword+StringPool.PERCENT));
criterion = RestrictionsFactoryUtil.or(criterion, RestrictionsFactoryUtil.like(DBConstants.OrderSubscription.STARTDATE, StringPool.PERCENT+searchKeyword+StringPool.PERCENT));
criterion = RestrictionsFactoryUtil.or(criterion, RestrictionsFactoryUtil.like(DBConstants.OrderSubscription.CANCELDATE, StringPool.PERCENT+searchKeyword+StringPool.PERCENT));

dynamicQuery.add(junctionOR);
dynamicQueryCount.add(junctionOR);

List<OrderSubscription> orders = OrderSubscriptionLocalServiceUtil.dynamicQuery(dynamicQuery, start, end);

现在投掷错误

at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date
at org.hibernate.type.descriptor.java.JdbcTimestampTypeDescriptor.unwrap(JdbcTimestampTypeDescriptor.java:42)
at org.hibernate.type.descriptor.sql.TimestampTypeDescriptor$1.doBind(TimestampTypeDescriptor.java:53)
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:91)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:283)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:278)
at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1873)
at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1844)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1716)
at org.hibernate.loader.Loader.doQuery(Loader.java:801)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
at org.hibernate.loader.Loader.doList(Loader.java:2542)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
at org.hibernate.loader.Loader.list(Loader.java:2271)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:119)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1716)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)
at com.liferay.portal.dao.orm.hibernate.DynamicQueryImpl.list(DynamicQueryImpl.java:94)
at com.liferay.portal.dao.orm.hibernate.DynamicQueryImpl.list(DynamicQueryImpl.java:88)
at com.liferay.portal.service.persistence.impl.BasePersistenceImpl.findWithDynamicQuery(BasePersistenceImpl.java:166)
... 148 more
Jan 08, 2016 6:39:51 AM org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet ordermanagment Servlet threw exception

摘要:

我想根据来自DB的搜索关键字获取列表 和我的DB列类型id datetime。

任何人都可以帮我解决这个问题

由于 Ravi Darji

0 个答案:

没有答案