Hibernate/JPA常见异常分析与解决_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Hibernate/JPA常见异常分析与解决

Hibernate/JPA常见异常分析与解决

 2012/2/8 9:41:50  itoracja  程序员俱乐部  我要评论(0)
  • 摘要:1.ClassNotFoundException:org.hibernate.hql.ast.HqlToken???(1)产生环境:SpringMVC3.0.5+com.springsource.org.hibernate-3.3.2.GA+SpringDM1.2.1???(2)解决方法:???方法1:在hibernateProperties中添加红色背景属性设置。???<propertyname="hibernateProperties"><br>????????
  • 标签:解决 分析 JPA hibernate 异常

    1. ClassNotFoundException: org.hibernate.hql.ast.HqlToken

??? (1)产生环境:SpringMVC3.0.5+com.springsource.org.hibernate-3.3.2.GA+SpringDM1.2.1

??? (2)解决方法

??? 方法1:在hibernateProperties中添加红色背景属性设置

??? <property name="hibernateProperties"><br>
??? ??? ??? <value><br>
??? ??? ??? ??? <span style="color: #ff0000;">hibernate.query.factory_class=org.hibernate.hql.classic.ClassicQueryTranslatorFactory</span>
<br>
??? ??? ??? ??? hibernate.dialect=org.hibernate.dialect.MySQLDialect<br>
??? ??? ??? ??? hibernate.show_sql=true<br>
??? ??? ??? ??? hibernate.format_sql=true<br>
??? ??? ??? </value><br>
??? </property>

??? 方法2:在JDK目录jire/lib/ext目录下放置:com.springsource.antlr-2.7.7.jar,该方法在当前的环境下<span style="color: #ff0000;">未测试</span>


??? <span style="color: #ff0000;">成功!</span>


??? (3)异常原因:Hibernate3.0以上版本采用新的基于ANTLR的HQL/SQL查询翻译器,在Hibernate的配置文件中,

??? hibernate.query.factory_class属性是用来选择查询翻译器的,网上有两中说法:<br>
??? <span style="color: #ff0000;">指定Hibernate3.0以上的查询翻译器:</span>
(这种配置不支持批量更新语句以及中文作为查询条件)<br>
??? hibernate.query.factory_class= org.hibernate.hql.ast.ASTQueryTranslatorFactory <br>
??? <span style="color: #ff0000;">指定Hibernate2.1以上的查询翻译器 :</span>
(支持中文作为查询条件但不支持批量更新)<br>
??? hibernate.query.factory_class= org.hibernate.hql.classic.ClassicQueryTranslatorFactory

?

??? 在我的测试环境中,配置ASTQueryTranslatorFactory任然不能解决本异常,只能配置成:

??? ClassicQueryTranslatorFactor;而在该情况下又<span style="color: #ff0000;">不支持中文作为查询条件!</span>


?

??? [size=10pt; font-family: Verdana;" lang="EN]ANTLR[/size]
[size=10pt;]是用纯[/size]
[size=10pt; font-family: Verdana;" lang="EN]Java[/size]
[size=10pt;]语言编写出来的一个编译工具,它可生成[/size]
[size=10pt; font-family: Verdana;" lang="EN]Java[/size]
[size=10pt;]语言或者是[/size]
[size=10pt; font-family: Verdana;" lang="EN]C++[/size]
[size=10pt;]的词法和语法分析器,并[/size]


??? [size=10pt;]可产生语法分析树并对该树进行遍历。[/size]
[size=10pt; font-family: Verdana;" lang="EN]ANTLR[/size]
[size=10pt;]由于是纯[/size]
[size=10pt; font-family: Verdana;" lang="EN]Java[/size]
[size=10pt;]的,因此可以安装在任意平台上,但是需要[/size]
[size=10pt; font-family: Verdana;" lang="EN]JDK[/size]


??? [size=10pt;]的支持。[/size]


2. Hibernate支持中文作为查询条件

??? (1) 产生环境:查询中文时? hql语句在生成的语句中把中文显示为乱码。

??? (2) 解决方法:在hibernate配置文件中加入:

???????? <property name="hibernate.query.factory_class"><br>
??????????????????? org.hibernate.hql.ast.ASTQueryTranslatorFactory

???????? </property>

???????? <property name="connection.useUnicode">true</property> <br>
???????? <property name="connection.characterEncoding">UTF-8</property>

3.

 
发表评论
用户名: 匿名