gpt4 book ai didi

spring-boot - Spring Boot 2.0.0.M4和Hibernate 5.2.11.Final找不到EntityManagerFactoryBuilder类型的bean

转载 作者:行者123 更新时间:2023-12-04 01:29:47 26 4
gpt4 key购买 nike

我显然有一些配置问题,但是我自己却无法解决。我希望你们能帮助我吗?

我发现的所有示例均未表明必须为EntityManagerFactoryBuilder创建Bean,这是什么问题。

我正在尝试配置完全独立的数据源,包括不同的实体管理器等。

我的错误:

申请启动失败

描述:

方法entityManagerFactory的参数0需要找不到类型为“org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder”的bean。

行动:

考虑在配置中定义类型为“org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder”的bean。

我的数据源配置

package ...;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.sql.DataSource;

@Configuration
@EnableTransactionManagement
public class DataSourceConfiguration {


@Primary
@Bean()
@ConfigurationProperties(prefix="spring.my.datasource")
public DataSource myDataSource() {
return DataSourceBuilder.create().build();
}



@Primary
@Bean(name = "myEntityManager")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder factoryBuilder,
@Qualifier("myEntityManager") DataSource bds) {
...
}
}

我的应用程序
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
HibernateJpaAutoConfiguration.class,
JpaRepositoriesAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class
})

我的宝

最佳答案

通过排除HibernateJpaAutoConfiguration,您将关闭创建EntityManagerFactoryBuilder bean。

默认情况下,EntityManagerFactoryBuilder bean由JpaBaseConfiguration#entityManagerFactoryBuilder(JpaVendorAdapter, ObjectProvider)生成。

只有一种JpaBaseConfiguration实现-HibernateJpaConfiguration,在以下情况下会被激活:

  • 只有一个DataSource候选(或一个被标记为@Primary);
  • HibernateJpaAutoConfiguration条件为真-检查HibernateJpaAutoConfiguration类。

  • 您应该创建和配置不带构建器的LocalContainerEntityManagerFactoryBean(就像您在自己的答案中所做的那样),或者在配置中手动创建EntityManagerFactoryBuilder,如下所示:

    @Bean
    public EntityManagerFactoryBuilder entityManagerFactoryBuilder() {
    return new EntityManagerFactoryBuilder(new HibernateJpaVendorAdapter(), new HashMap<>(), null);
    }

    关于spring-boot - Spring Boot 2.0.0.M4和Hibernate 5.2.11.Final找不到EntityManagerFactoryBuilder类型的bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46574686/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com