开发者社区> 问答> 正文

hibernate如何执行DB2序列查询?报错

在SQL语句中执行

nextval for SEQ_CN



查询DB2的序列的下一个值没问题,但是在代码中使用hibernate执行这个SQL就会报错,怎么解决?

public String getCertCN(){
		String hql = "values nextval for SEQ_CN";
		Query query=createQuery(hql);
		List ret = query.list();
		String template = "CSDCWEB";
		System.out.println("测试生成的CN");
		String result = (String) ret.get(0);
		for( int i = 0 ;i<9-result.length();i++)
			template += "0";
		return template+result;
}



报错信息如下:

10:46:28,367 ERROR PARSER:56 - line 1:1: unexpected token: values
java.lang.IllegalArgumentException: node to traverse cannot be null!
	at org.hibernate.hql.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:63)
	at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:280)
	at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:182)
	at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
	at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
	at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
	at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:98)
	at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
	at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
	at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1760)



展开
收起
爱吃鱼的程序员 2020-06-09 11:39:31 557 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    我看你代码初步判断··你是不是调用了hql的查询 hibernate分2种 一个HQL查询 一个直接SQL查询···

    2020-06-09 11:39:48
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PolarDB NL2SQL: 帮助您写出准确、优化的SQL 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载