weblogic81下使用hibernate3的update query方法應注意的問題
以前用welogic81和hibernate時報錯:
ClassNotFoundException: org.hibernate.hql.ast.HqlToken是因爲weblogic要加載antlr.jar,hibernate也要加載antlr.jar,問題就出在weblogic比hibernate先加載,所以hibernate就找不到它的antlr.jar裏面的類,解決方法是在spring的application.xml裏面的hibernate屬性配置裏面加入
<prop key="hibernate.query.factory_class">
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</prop>
代碼後不再出錯,但是今天採用hibernate3的update query方法的時候,則報錯:
org.springframework.orm.hibernate3.HibernateQueryException: query must begin with SELECT or FROM原因是spring的application.xml裏面的hibernate屬性:
hibernate.query.factory_class 已經不能支持hibernate3的update query方法了
所以要把它的值改成:
<prop key="hibernate.query.factory_class">
org.hibernate.hql.ast.ASTQueryTranslatorFactory
</prop>
但是添加這句話之後又要報:
ClassNotFoundException: org.hibernate.hql.ast.HqlToken
這個異常了是因爲單存的在spring的application.xml裏面的hibernate的屬性裏面加hibernate.query.factory_class 屬性已經解決不了,可能緣於hibernate的antlr.jar的版本高了,需要做的是改變weblogic的啓動配置
―――――――――――――――Now:
update query爲Hiberante3下特有的方法,實例:
session.createQuery("delete from Company where id=1").executeUpdate();
如果要讓上面的那段代碼執行成功,需要做到下面的幾項:
1. 在spring的application.xml裏面配置hibernate的properties時,加入:
<prop key="hibernate.query.factory_class">
org.hibernate.hql.ast.ASTQueryTranslatorFactory
</prop>
2. 拷貝Hibernate3裏帶的包antlr-2.7.6.jar到%WL_HOME%\server\lib下
3. 修改startWebLogic.cmd :在set CLASSPATH之前加上下面一句:
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.6.jar;
在set CLASSPATH之後加上下面一句:
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/volcano_hosan/archive/2007/03/22/1537429.aspx
ClassNotFoundException: org.hibernate.hql.ast.HqlToken是因爲weblogic要加載antlr.jar,hibernate也要加載antlr.jar,問題就出在weblogic比hibernate先加載,所以hibernate就找不到它的antlr.jar裏面的類,解決方法是在spring的application.xml裏面的hibernate屬性配置裏面加入
<prop key="hibernate.query.factory_class">
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</prop>
代碼後不再出錯,但是今天採用hibernate3的update query方法的時候,則報錯:
org.springframework.orm.hibernate3.HibernateQueryException: query must begin with SELECT or FROM原因是spring的application.xml裏面的hibernate屬性:
hibernate.query.factory_class 已經不能支持hibernate3的update query方法了
所以要把它的值改成:
<prop key="hibernate.query.factory_class">
org.hibernate.hql.ast.ASTQueryTranslatorFactory
</prop>
但是添加這句話之後又要報:
ClassNotFoundException: org.hibernate.hql.ast.HqlToken
這個異常了是因爲單存的在spring的application.xml裏面的hibernate的屬性裏面加hibernate.query.factory_class 屬性已經解決不了,可能緣於hibernate的antlr.jar的版本高了,需要做的是改變weblogic的啓動配置
―――――――――――――――Now:
update query爲Hiberante3下特有的方法,實例:
session.createQuery("delete from Company where id=1").executeUpdate();
如果要讓上面的那段代碼執行成功,需要做到下面的幾項:
1. 在spring的application.xml裏面配置hibernate的properties時,加入:
<prop key="hibernate.query.factory_class">
org.hibernate.hql.ast.ASTQueryTranslatorFactory
</prop>
2. 拷貝Hibernate3裏帶的包antlr-2.7.6.jar到%WL_HOME%\server\lib下
3. 修改startWebLogic.cmd :在set CLASSPATH之前加上下面一句:
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.6.jar;
在set CLASSPATH之後加上下面一句:
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/volcano_hosan/archive/2007/03/22/1537429.aspx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.