×
文章路径: Java

weblogic跟hibernate3冲突HqlToken

发表于3年前(Dec 24, 2014 1:42:27 PM)  阅读 335  评论 0

分类: Java 开发运维环境

标签: Weblogic antlr ClassicQueryTranslatorFactory factory里面可以配置hibernate.query.factory_classs hibernate3 HqlToken 包冲突

weblogic10以上的版本跟hibernate3中的antlr.jar冲突,冲突的原因网上已经有很多解释,方案也有很多,我测试了多种,只有一种成功了,不知道他们怎么成功的,现将我成功的方法分享给大家。

修改hibernate配置文件。因为我是使用的jpa,在我的applicationContext.xml里面以前配了这么一个entityManagerFactory

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
	<property name="dataSource" ref="dataSource" />
	<property name="jpaVendorAdapter">
		<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
			<property name="showSql" value="true"/>
			<property name="generateDdl" value="false"/>
			<property name="databasePlatform" value="org.hibernate.dialect.Oracle9Dialect"/>
		</bean>
	</property>
</bean>
在这基础上加多一个属性,配置如下:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
	<property name="dataSource" ref="dataSource" />
	<property name="jpaVendorAdapter">
		<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
			<property name="showSql" value="true"/>
			<property name="generateDdl" value="false"/>
			<property name="databasePlatform" value="org.hibernate.dialect.Oracle9Dialect"/>
		</bean>
	</property>
	<property name="jpaProperties">
		<props>
			<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
		</props>
	</property>
</bean>

即可解决进行hql查询时报错的问题。

相应的,如果是使用的hibernate,应该在hibernate.cfg.xml中的session-factory里面可以配置hibernate.query.factory_classs属性。

发表评论