@Statement public Long selectMeterLogSum(OPersistenceSession session, final ListQueryParameterObject params) { Map<String, Object> map = (Map<String, Object>) params.getParameter(); Query q = new Query().select(ProjectionFunction.count(Projection.projection("value")).as("value")) .from(getSchemaClass()); List<Object> args = new ArrayList<>(); if(map.get("name")!=null) { q.where(Clause.clause("name", Operator.EQ, Parameter.PARAMETER)); args.add(map.get("name")); } if(map.get("reporter")!=null) { q.where(Clause.clause("reporter", Operator.EQ, Parameter.PARAMETER)); args.add(map.get("reporter")); } if(map.get("startDate")!=null) { q.where(Clause.clause("timestamp", Operator.GT, Parameter.PARAMETER)); args.add(map.get("startDate")); } if(map.get("endDate")!=null) { q.where(Clause.clause("timestamp", Operator.LT, Parameter.PARAMETER)); args.add(map.get("endDate")); } ODatabaseDocument db = session.getDatabase(); List<ODocument> ret = db.query(new OSQLSynchQuery<>(q.toString()), args.toArray()); return (Long)(ret!=null && !ret.isEmpty()? ret.get(0).field("value", OType.LONG):null); } }