sql - jpa hibernate 在 DB2 中呈现 SQL 错误?
问题描述
我认为休眠在 DB2 中呈现错误的 SQL? 我肯定犯了错误
我的 jpa 代码是:
public List<Gc1glcostctrmap> findByCriteria(
Map<String, SortDirectionEnum> sortFields,
Integer start,
Integer length) throws Exception {
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Gc1glcostctrmap> criteriaQuery = builder.createQuery(Gc1glcostctrmap.class);
Root<Gc1glcostctrmap> root = criteriaQuery.from(Gc1glcostctrmap.class);
int noDeleted = 0;
criteriaQuery.select( root )
.where( builder.equal(root.get(Gc1glcostctrmap_.g1011logdel), noDeleted) );
if ( Validator.isNotNull(sortFields) ) {
criteriaQuery.orderBy(_orderBy(sortFields, builder, root));
}
// create query
Query query = entityManager.createQuery(criteriaQuery);
query.setFirstResult(start);
query.setMaxResults(length);
// execute query
List<Gc1glcostctrmap> gc1glcostctrmaps = query.getResultList();
return gc1glcostctrmaps;
}
并且 sqlshow 是 True,并且对于呈现的第一页:
select fields from BNGL.GC1GLCOSTCTRMAP gc1glcostc0_ where gc1glcostc0_.g1011logdel=0 order by gc1glcostc0_.g1136id asc fetch first 10 rows only
但是对于呈现的第二页:
select fields from ( select inner2_.*, rownumber() over( order by order of inner2_) as rownumber_ from
( select fields from BNGL.GC1GLCOSTCTRMAP gc1glcostc0_ where gc1glcostc0_.g1011logdel=0 order by gc1glcostc0_.g1136id asc fetch first 20 rows only ) as inner2_ ) as inner1_ where rownumber_ > 10
order by rownumber_
最终错误是:
2018-07-29 09:13:22.218 WARN 6684 --- [nio-8082-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: -199, SQLState: 42601
2018-07-29 09:13:22.219 ERROR 6684 --- [nio-8082-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper : DB2 SQL Error: SQLCODE=-199, SQLSTATE=42601, SQLERRMC=OF;( . AT MICROSECONDS MICROSECOND SECONDS SECOND MINUTES MINUTE, DRIVER=3.68.61
2018-07-29 09:13:22.219 WARN 6684 --- [nio-8082-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: -516, SQLState: 26501
2018-07-29 09:13:22.219 ERROR 6684 --- [nio-8082-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper : DB2 SQL Error: SQLCODE=-516, SQLSTATE=26501, SQLERRMC=null, DRIVER=3.68.61
2018-07-29 09:13:22.219 WARN 6684 --- [nio-8082-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: -514, SQLState: 26501
2018-07-29 09:13:22.219 ERROR 6684 --- [nio-8082-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper : DB2 SQL Error: SQLCODE=-514, SQLSTATE=26501, SQLERRMC=SQL_CURLH200C1, DRIVER=3.68.61
2018-07-29 09:13:22.228 ERROR 6684 --- [nio-8082-exec-9] ir.bmi.service.impl.MapTstServiceImpl : Error occurred while calling findByCriteria().
解决方案
推荐阅读
- flutter - Flutter灵活文本在列中溢出
- python - ImportError:无法从“plotly.express”导入名称“Constant”
- bash - 从 AWS S3 下载库存文件
- flutter - 如何使标签栏中的文本显示在同一行?
- node.js - Async/await 通过错误处理执行多个功能
- java - 如何使对话框片段的背景不可见?
- mysql - 如何从准备好的语句创建视图或表(选择查询)
- java - 无法创建生产者在 ActiveMQ 上发送消息
- javascript - 我试图禁用过去的日期,现在我希望我的“date_to”字段日期大于“date_from”字段日期
- javascript - 如何获取我的 django 网站上的活跃用户数?