Java Spring中HTTP会话范围的EntityManagerFactory
在Spring4中,我需要为每个HTTP会话使用单独的Java Spring中HTTP会话范围的EntityManagerFactory,java,spring,hibernate,spring-mvc,hibernate-entitymanager,Java,Spring,Hibernate,Spring Mvc,Hibernate Entitymanager,在Spring4中,我需要为每个HTTP会话使用单独的EntityManagerFactory。这是因为使用DB登录密码进行身份验证。 因此,我将会话范围限定为DataSource和EntityManagerFactory,如下所示: @Bean @Scope(value = "session", proxyMode = ScopedProxyMode.INTERFACES) public FactoryBean<EntityManagerFactory> entityManager
EntityManagerFactory
。这是因为使用DB登录密码进行身份验证。
因此,我将会话范围限定为DataSource
和EntityManagerFactory
,如下所示:
@Bean
@Scope(value = "session", proxyMode = ScopedProxyMode.INTERFACES)
public FactoryBean<EntityManagerFactory> entityManagerFactory() throws SQLException {
LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
factoryBean.setDataSource(dataSource());
factoryBean.setPersistenceProviderClass(HibernatePersistence.class);
factoryBean.setPersistenceUnitName("db");
return factoryBean;
}
但我有一个错误:
NoUniqueBeanDefinitionException: No qualifying bean of type [javax.persistence.EntityManagerFactory] is defined: expected single matching bean but found 2: scopedTarget.entityManagerFactory,entityManagerFactory
如何正确地注入它?您不需要(或不想要)会话范围EntityManagerFactory
使用支持为执行线程设置凭据的
数据源
,如,或使用内置到hibernate中的。不,您不需要会话范围的对象。使用并设置每个请求的凭据。不要尝试使用会话或其他作用域实体管理器。或者使用hibernate的内置多租户支持,它也支持这种开箱即用的方式!哇!你能写下来作为回答吗?那我就接受了。
NoUniqueBeanDefinitionException: No qualifying bean of type [javax.persistence.EntityManagerFactory] is defined: expected single matching bean but found 2: scopedTarget.entityManagerFactory,entityManagerFactory