在使用Spring的HibernateTemplate查找数据时,出现题目中的错误信息,从字面可以看出是HQL语句的参数设置出了问题.
原因:JPA的问号索引是从1开始的,而HibernateTemplate是从0开始的。而且HibernateTemplate执行HQL语句时,HQL的语句中'?'号面是不带数字的,而使用JPA时,HQL语句的'?'是可以有数字的(是否必须有待考证),带数字的话一定是从1开始。
对于使用HibernateTemplate而言:
(1)正确:'from User where username = ? and password = ?'
(2)错误:'from User where username = ?1 and password = ?2'
设置参数:
/**
* 为Where语句传递参数
* @param query
* @param queryParams
* o.key = ?1 and o.name=?2 这是错误的,JPA的问号索引是从1开始的,而HibernateTemplate是从0开始的,HibernateTemplate执行HQL语句时,HQL的语句中'?'号面是不带数字的
* o.key = ? and o.name=?
*/
protected void setQueryParams(Query query,Object[] queryParams) {
if(queryParams!=null && queryParams.length>0){
for(int i=0;i<queryParams.length;i++){ //JPA的问号索引是从1开始的,而HibernateTemplate是从0开始的
query.setParameter(i, queryParams[i]); //如果是JPA:i+1
}
}
}
分享到:
相关推荐
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder 继承并重写LinearLayoutManager.onLayoutChildren()方法 class WrappedLinearLayoutManager : ...
java.lang.ArrayIndexOutOfBoundsException: 128 at android.content.res.StringBlock.getShort(StringBlock.java:231) at android.content.res.StringBlock.getString( StringBlock.java:91) at android.content...
java 索引越界异常(IndexOutOfBoundsException) java 索引越界异常(IndexOutOfBoundsException)
1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括 2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会...
1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会...
rectclerView出现java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 2(offset:2) 解决方案:原因就是在清除数据源的时候没有及时notify,需要及时更新list,否则就会报这个错误. ...
堆栈跟踪:异常:IndexOutOfBoundsException消息:索引:0,大小:0跟踪:java.util.ArrayList.rangeCheck(未知源)java.util.ArrayList.get(未知源)org.spoutcraft.launcher.skin.NewsComponent.setupArticles ...
基础知识:1.C++或Java中的异常处理机制的简单原理和应用。当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标...
1. Java 中的异常处理机制的简单原理和应用。 当 Java 程序远反了 Java 的语义规则时,Java 虚拟机就会将发生的错误表示为 一个异常。远反语义规则包括 2 种情况。一种是 Java 类库内置的语义检查。例如 数 组下标...
1.Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发...
1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会...
当Java程序违反了Java的语义规则时,Java虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是Java类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会...
1.C++或Java中的异常处理机制的简单原理和应用。 当 JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检 查。例如数组下标越界,会...
1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会...
1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会...
1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发...
模拟试题1及答案-Java语言程序设计(第3版)-沈泽刚-清华大学出版社 模拟试题1及答案-Java语言程序设计(第3版)-沈泽刚-清华大学出版社全文共10页,当前为第1页。模拟试题1及答案-Java语言程序设计(第3版)-沈泽刚-清华...
1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会...
NULL 博文链接:https://liuzidong.iteye.com/blog/1071677
1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出...