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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章