我正在使用Spring Framework 3.1和Hibernate 4.1作为JPA提供程序,我有一个功能齐全的设置,但每次启动Web应用程序时,我都会看到以下警告消息:
14:28:12,725 WARN pool-2-thread-12 internal.EntityManagerFactoryRegistry:80 - HHH000436: Entity manager factory name (something) is already registered. If entity manager will be clustered or passivated, specify a unique value for property 'hibernate.ejb.entitymanager_factory_name'
Run Code Online (Sandbox Code Playgroud)
该应用程序功能很好,但是这样的警告信息让我烦恼,而且数小时的搜索,调整和试验都让我无处可去.我已经尝试更改工厂名称并添加和省略配置块,但都无济于事.似乎Spring或Hibernate中的某些东西只是初始化实体管理器工厂两次.
仅供参考,我正在使用LocalContainerEntityManagerFactoryBean的packagesToScan功能来配置没有persistence.xml文件的实体管理器.
我已经将我的spring上下文XML减少到以下内容并且问题仍然存在:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.nightsword.driverClassName}"/>
<property name="url" value="${jdbc.nightsword.url}"/>
<property name="username" value="${jdbc.nightsword.username}"/>
<property name="password" value="${jdbc.nightsword.password}"/>
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
</property>
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" …Run Code Online (Sandbox Code Playgroud)