当前位置: 首页 > 知识库问答 >
问题:

Spring boot Hibernate数据源异常应用程序启动时出现null异常

公羊涛
2023-03-14

得到

错误[SpringApplication]应用程序启动失败org.springframework.beans.factory.BeanCreationException:创建名称为myEntityManagerFactory的bean错误定义在类路径资源[com/员工/服务/配置/DBConfiguration.class]:调用init方法失败;嵌套异常是java.lang.NullPointerException在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean

原因:java。组织中的lang.NullPointerException。冬眠靴子模型来源内部的hbm。ModelBinder$AbstractPluralAttributeSecondPass。bindCollectionElement(ModelBinder.java:3554)~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]位于org。冬眠靴子模型来源内部的hbm。ModelBinder$AbstractPluralAttributeSecondPass。doSecondPass(ModelBinder.java:3133)~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]位于org。冬眠靴子内部的InFlightMetadataCollectorImpl。processSecondPasses(InFlightMetadataCollectorImpl.java:1696)~(hibernate-core-5.3.7.Final.jar:5.3.7.Final)位于org。冬眠靴子内部的InFlightMetadataCollectorImpl。processSecondPasses(InFlightMetadataCollectorImpl.java:1664)~(hibernate-core-5.3.7.Final.jar:5.3.7.Final)位于org。冬眠靴子模型过程spi。MetadataBuildingProcess。在org上完成(MetadataBuildingProcess.java:287)~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]。冬眠jpa。靴子内部的EntityManagerFactoryBuilderImpl。元数据(EntityManagerFactoryBuilderImpl.java:904)~(hibernate-core-5.3.7.Final.jar:5.3.7.Final)位于org。冬眠jpa。靴子内部的EntityManagerFactoryBuilderImpl。在org上构建(EntityManagerFactoryBuilderImpl.java:935)~(hibernate-core-5.3.7.Final.jar:5.3.7.Final)。springframework。orm。jpa。小贩SpringHibernateJpaPersistenceProvider。createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60)

对于代码

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

@Bean
public LocalContainerEntityManagerFactoryBean myEntityManagerFactory() {
    LocalContainerEntityManagerFactoryBean employees = createEntityManagerFactory(
        myDataSource(), "Employees",
        MyMapping.MAPPINGS);
    return employees;
}

@Bean
public EntityManager myEntityManager(@Qualifier("myEntityManagerFactory")
    EntityManagerFactory emf) {
    return entityManager(emf);
}

@Bean
public JpaTransactionManager myTransactionManager(@Qualifier("myEntityManagerFactory")
    EntityManagerFactory emf) {
    return transactionManager(emf);
}

@Bean
public TransactionHelper myTransactionHelper(
    @Qualifier("myTransactionManager")
        JpaTransactionManager transactionManager) {
    TransactionHelper transactionHelper = new TransactionHelper();
    transactionHelper.setPlatformTransactionManager(transactionManager);
    return transactionHelper;
}

// Common methods
private LocalContainerEntityManagerFactoryBean createEntityManagerFactory(
    DataSource dataSource, String persistenceUnitName, String[] mappings) {
    MyLocalContainerEntityManagerFactoryBean entityManagerFactory
        = new MyLocalContainerEntityManagerFactoryBean();
    entityManagerFactory.setDataSource(dataSource);
    entityManagerFactory.setPersistenceUnitName(persistenceUnitName);
    entityManagerFactory.setPackagesToScan("com.employees.domain");
    JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    entityManagerFactory.setJpaVendorAdapter(vendorAdapter);
    entityManagerFactory.setJpaProperties(additionalProperties());

    if (mappings != null) {
        entityManagerFactory.setMappingResources(mappings);
    }
    return entityManagerFactory;
}

private JpaTransactionManager transactionManager(EntityManagerFactory emf) {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(emf);
    return transactionManager;
}

private EntityManager entityManager(EntityManagerFactory emf) {
    return SharedEntityManagerCreator.createSharedEntityManager(emf);
}

@Bean
@Primary
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
    return new PersistenceExceptionTranslationPostProcessor();
}

private Properties additionalProperties() {
    Properties properties = new Properties();
    properties.setProperty("hibernate.hbm2ddl.auto", "none");
    //        properties.setProperty("hibernate.show_sql", "true");
    properties.setProperty("hibernate.implicit_naming_strategy",
        "com.employees.domain.hibernate.BackwardsCompatibleImplicitNamingStrategy");
    properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect");
    return properties;
}

@Bean public TraceProperties traceProperties() {
    TraceProperties traceProperties = new TraceProperties();
    Set<TraceProperties.Include> includes = new HashSet<>();
    includes.addAll(Arrays.asList(TraceProperties.Include.values()));
    traceProperties.setInclude(includes);
    return traceProperties;
}

共有1个答案

邓季
2023-03-14

在我的例子中,这个问题与Hibernate映射有关。有一个. hbm文件中有一个嵌套表或创建数据库连接实体管理器工厂时未定义的关联。

 类似资料:
  • 我的主 LoginController.java 请注意,我还没有在userController.java中编写任何代码,我只是为user.fxml编写了ui 在javafx.fxml.fxmlloader.constructloadexception(fxmlloader.java:2597)在javafx.fxml.fxmlloader.access$100(fxmlloader.java:1

  • 我尝试使用Spring Boot创建一个非web应用程序,以MKyong的示例为例,但我得到了以下错误: 我的conf文件(application.yml)是 在我的专业pom中。我添加的xml文件: 我的切入点类: 如您所见,我已尝试检查该类是否已在类路径中。如果我取消注释该行,我得到一个类不发现异常,所以看起来错误是由于 Maven 不包括依赖项引起的。我试图将作用域设置为,但无论如何都失败了

  • 我在启动Spring Boot应用程序时遇到以下异常。Spring Boot版本:2.1.13 Spring Framework版本:5.1.14 原因:原因:com.datastax.driver.core.exceptions.driverinternalerror:在类路径中检测到不兼容的Guava版本。你需要16.0.1或更高。在com.datastax.driver.core.guava

  • 乍一看,这个问题似乎是重复的。我已经在谷歌搜索了一些,但不幸的是,没有一个结果不符合我。我给出了下面的问题链接。 应用程序启动方法java.lang.Reflect.InvocationTargetException JavaFX图像转换中出现异常 JavaFX-应用程序启动方法中的异常? 应用程序启动方法中出现异常 堆栈跟踪: 无法从此StackTrace跟踪错误。然后我在start方法中使用了

  • 我刚刚开始使用JavaFX,我试图构建一个简单的应用程序,其中包含标签、文本字段和按钮,当单击这些按钮时,将标签的值设置为文本字段的值。在我把控制器连接到主文件之前,一切都很顺利。这是我的代码: 我尝试了在StackOverflow上找到的多个答案,但我找到的都是2年前的答案,对我的代码没有任何积极的影响。 编辑:在此处堆栈跟踪:

  • 在我最终弄清楚为什么JWS 1.6.0_29无法启动1.4.2_12应用程序(请参见此问题)之后,我在启动1.4.2_12应用程序时遇到了另一个异常。使用JWS 1.6.0_29。 加载ResourceBundle时,我得到一个Missing ResourceExc0019。然而,message.properties文件确实存在于加载它的类的同一个包中。 当使用JWS 1.4或1.5启动应用程序时