query.setFirstResult解析

本文为一篇示例转载文章,具体细节与技术内容未给出,通常这类文章会包含作者的观点或者对原文的理解与总结。

转自:https://blog.youkuaiyun.com/thinkingcao/article/details/78053622

Caused By: javax.faces.view.facelets.FaceletException: 检验数据查询错误,{endDate=2025-07-22, notLikeKey=T11, startDate=2025-07-16},EJBException: An exception occurred while creating a query in EntityManager: Exception Description: Problem compiling [select c.id,c.orgCode,t.old_tool_gather_no from mes.tool_check c,mes.tool_note_requests t where c.request_no=t.request_no]. [7, 11] The state field path 'c.id' cannot be resolved to a valid type. [13, 22] The state field path 'c.orgCode' cannot be resolved to a valid type. [24, 44] The state field path 't.old_tool_gather_no' cannot be resolved to a valid type. [50, 66] 'mes.tool_check c' cannot be the first declaration of the FROM clause. [99, 111] The state field path 'c.request_no' cannot be resolved to a valid type. [114, 126] The state field path 't.request_no' cannot be resolved to a valid type. at com.lkm.pmi.toolSystem.server.ToolCheckListBeanEjb.queryCheckByPage2(ToolCheckListBeanEjb.java:53) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method), /** * 查询,分页 */ public List<ToolCheckEntity> queryPage2(int first, int pageSize, Map<String, String> queryMap, Map<String, String> sortMap) { try { evictAllEm(); String querySql = getCheckAndOldToolGatherNo(); Query query = this.em.createQuery(querySql); query.setFirstResult(first); query.setMaxResults(pageSize); return query.getResultList(); } catch (Exception e) { throw new EJBException(e.getMessage()); } } private String getCheckAndOldToolGatherNo(){ String sql="select c.id,c.orgCode,t.old_tool_gather_no from mes.tool_check c,mes.tool_note_requests t \n" + "where c.request_no=t.request_no"; return sql; }报错如何解决
07-22
分析这段代码并注释, /** * 查出认领的列表 * * @param first * @param pageSize * @param filters * @return */ public Map<String, Object> pagerNoneNc(int first, int pageSize, Map<String, Object> filters) { Map<String, Object> pager = new HashMap<>(); evictAllEm(); CriteriaBuilder builder = em.getCriteriaBuilder(); // query CriteriaQuery<Long> countQueryer = builder.createQuery(Long.class); CriteriaQuery<CncDetails> query = builder.createQuery(CncDetails.class); Subquery<String> subquery = query.subquery(String.class); //froom root Root<CncHeader> headerRoot = subquery.from(CncHeader.class); Root<CncDetails> detailRoot = countQueryer.from(CncDetails.class); // select subquery.select(headerRoot.<String>get("lotNo")); countQueryer.select(builder.count(detailRoot)); query.select(detailRoot); // header 条件 Predicate[] ps = new Predicate[] { }; Set<String> keys = filters.keySet(); for (String key : keys) { ps = (Predicate[]) ArrayUtils.add(ps, builder.equal(headerRoot.get(key), filters.get(key))); } Predicate ps_ = builder.and(builder.equal(headerRoot.get("source"), HeaderDataSource.Claim)); ps = (Predicate[]) ArrayUtils.add(ps, ps_); subquery.where(ps); CriteriaBuilder.In<Object> in = builder.in(detailRoot.get("lotNo")).value(subquery); Path p = detailRoot.get("originalMinutes"); Predicate wt = builder.and(builder.gt(p, 0)); Predicate[] pswt = { in }; //count countQueryer.where(pswt); Long count = em.createQuery(countQueryer).getSingleResult(); // resultSet query.where(pswt); List<CncDetails> results = em.createQuery(query).setFirstResult(first).setMaxResults(pageSize).getResultList(); List<NoneNcDetail> list = new ArrayList<>(); for (CncDetails detail : results) { NoneNcDetail noneNcDetail = buildNoneNcDetail(detail); noneNcDetail.setMayDown(downType(detail.getLotNo(), detail.getFileName())); list.add(noneNcDetail); } pager.put("counts", count); pager.put("datas", list); return pager; }
最新发布
08-23
sql报错识别不了 BETWEEN :startDate and :endDate , public List<EventDataReportDm> getEventDataReportList(int first, int pageSize, Map<String, String> queryMap, Map<String, String> sortMap) { try { this.evictAllEm(); String querySql = this.buildEventDataReportQuery(queryMap, sortMap, false); Query query = this.em.createNativeQuery(querySql); query.setFirstResult(first); query.setMaxResults(pageSize); this.setQueryParameters(query, queryMap); List<Object> list = query.getResultList(); return this.mapResultsToEntities(list); } catch (Exception e) { throw new EJBException(e.getMessage()); } } private String buildEventDataReportQuery(Map<String, String> queryMap, Map<String, String> sortMap, boolean isCountQuery) { StringBuilder sqlBuilder = new StringBuilder(); if (isCountQuery) { //查询记录条数 } else { sqlBuilder.append("SELECT \n" + " a.tag4 AS empNo,\n" + " COUNT(CASE WHEN TIMESTAMPDIFF(MINUTE, a.confirm_time, b.first_transfer) <= 15 THEN 1 END) AS normalCount,\n" + " COUNT(CASE WHEN TIMESTAMPDIFF(MINUTE, a.confirm_time, b.first_transfer) > 15 THEN 1 END) AS timeoutCount\n" + "FROM (\n" + " SELECT \n" + " tag4,\n" + " tag5,\n" + " SUBSTRING_INDEX(data_key, ',', 1) AS order_num,\n" + " SUBSTRING_INDEX(SUBSTRING_INDEX(data_key, ',', 2), ',', -1) AS plate_num,\n" + " MIN(update_date) AS confirm_time -- 唯一标识的最早下机时间\n" + " FROM LKM_EVENT_DATA WHERE data_type = '下机确认' "); if (queryMap != null && !queryMap.isEmpty()) { if (queryMap.get("updateDate") != null && queryMap.get("updateDate").matches("(?i)BETWEEN_.*")) { sqlBuilder.append(" AND update_date BETWEEN :startDate and :endDate "); } } sqlBuilder.append(" GROUP BY \n" + " tag4,\n" + " tag5,\n" + " SUBSTRING_INDEX(data_key, ',', 1),\n" + " SUBSTRING_INDEX(SUBSTRING_INDEX(data_key, ',', 2), ',', -1) "); sqlBuilder.append(" ) a "); sqlBuilder.append(" JOIN (\n" + " SELECT \n" + " tag4,\n" + " tag5,\n" + " SUBSTRING_INDEX(data_key, ',', 1) AS order_num,\n" + " SUBSTRING_INDEX(SUBSTRING_INDEX(data_key, ',', 2), ',', -1) AS plate_num,\n" + " MIN(update_date) AS first_transfer -- 唯一标识的最早转序时间\n" + " FROM LKM_EVENT_DATA\n" + " WHERE data_type = '转序'\n" + " GROUP BY \n" + " tag4,\n" + " tag5,\n" + " SUBSTRING_INDEX(data_key, ',', 1),\n" + " SUBSTRING_INDEX(SUBSTRING_INDEX(data_key, ',', 2), ',', -1)\n" + ") b ON a.tag4 = b.tag4\n" + " AND a.tag5 = b.tag5\n" + " AND a.order_num = b.order_num\n" + " AND a.plate_num = b.plate_num\n" + "GROUP BY a.tag4; "); } logger.info("ZhuanXuSql:"+sqlBuilder.toString()); return sqlBuilder.toString(); } private void setQueryParameters(Query query, Map<String, String> queryMap) { if (queryMap != null) { if (queryMap.containsKey("tag4") && StringUtils.isNotBlank((String) queryMap.get("tag4"))) { query.setParameter("tag4", queryMap.get("tag4")); } if (queryMap.get("updateDate") != null && queryMap.get("updateDate").matches("(?i)BETWEEN_.*")) { String[] val = queryMap.get("updateDate").substring(8).split(","); if (val != null && val.length == 2) { logger.info("startDate:" + val[0]); logger.info("endDate:" + val[1]); query.setParameter("startDate", val[0]); query.setParameter("endDate", val[1]); } } } }
08-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值