Liferay 自定义带有日期的 sql 查询

问题描述 投票:0回答:2

我正在尝试在liferay门户中编写自定义sql查询。以下是查询。

SELECT sum(score) as total FROM ratingsentry r  WHERE r.modifiedDate>?;

util函数如下。

String sql = CustomSQLUtil.get("GET_TODAY_COUNT");              
SQLQuery q = dbSession.createSQLQuery(sql);
QueryPos qPos = QueryPos.getInstance(q);        

Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.DATE, -1);               
java.sql.Timestamp timestamp = CalendarUtil.getTimestamp(cal.getTime());      
qPos.add(timestamp);

q.addScalar("total", Type.LONG );                                   
Object count=q.uniqueResult();

从上面的 util 方法中,te count 始终返回 0。

非常感谢任何帮助。

sql liferay
2个回答
0
投票

试试这个:

Timestamp timestamp = new Timestamp(cal.getTimeInMillis());

0
投票

我在服务构建器中传递查询,以防它可以帮助您:

String myParameter = "?";

DynamicQuery dynamicQuery = dynamicQuery();
        
ProjectionList projectionList = ProjectionFactoryUtil.projectionList();
projectionList.add(ProjectionFactoryUtil.sum("score"));

dynamicQuery.setProjection(projectionList);
dynamicQuery.add(RestrictionsFactoryUtil.gt("modifiedDate", myParameter));
List<Object[]> results = logCalendarioPersistence.findWithDynamicQuery(dynamicQuery);

作为一般规则(我不知道这是否是您的情况)聚合函数需要一个“分组依据”,在这种情况下将按您的表的相关值进行分组,为此,您可以使用:

projectionList.add(ProjectionFactoryUtil.groupProperty("myColumn"));

希望您觉得它有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.