如何禁用spring boot HibernateJpaAutoConfiguration

时间:2016-05-29 18:13:09

标签: hibernate spring-boot spring-data

我有一个依赖项目B的春季启动项目A. 项目B有一些.hbm.xml资源。 在项目A中进行更改hibernate配置我为更改sessionFactory添加了DatabaseConfiguration @Configuration

@Bean
public LocalSessionFactoryBean sessionFactory() {
    LocalSessionFactoryBean sessionFactoryBean = new  LocalSessionFactoryBean();
    sessionFactoryBean.setDataSource(dataSource);
    sessionFactoryBean.setMappingLocations("classpath*:hibernate/**/*.hbm.xml");
    Properties hibernateProperties = new Properties();
    hibernateProperties.put("hibernate.dialect", HIBERNATE_DIALECT);
    hibernateProperties.put("hibernate.show_sql", HIBERNATE_SHOW_SQL);
    sessionFactoryBean.setHibernateProperties(hibernateProperties);

    return sessionFactoryBean;
}

build.gradle具有此依赖性HibernateJpaAutoConfiguration运行

compile 'org.springframework.boot:spring-boot-starter-data-jpa'

当我在gradle bootRun或maven spring-boot中运行应用程序时:运行 应用程序启动和确定但是当我在java -jar中运行时 我得到例外

  caused by: org.springframework.beans.factory.BeanCreationException: 
  Error creating bean with name 'entityManagerFactory' defined in class path 
 resource    [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: 
 Invocation of init method failed; nested exception is org.hibernate.MappingException: 
An association from the table core_organization_Structure refers to an unmapped class: org.roshan.framework.domain.security.User

我不知道为什么HibernateJpaAutoConfiguration启动??? 之后,我将Application.java更改为喜欢这样排除但是再次无法正常工作。当我将hbm复制到projectA .project运行并且ok(使用java -jar)

@SpringBootApplication(exclude = {HibernateJpaAutoConfiguration.class })

更新

在搜索和测试之后,我发现了问题并解决了这个问题。因为问题是在project.spring启动执行器中使用hibernate-entitymanager依赖项检测到这个和auto config实体管理器。删除此依赖关系后禁用HibernateJpaAutoConfiguration工作正确:D

2 个答案:

答案 0 :(得分:3)

经过搜索和测试,我发现问题,问题的原因是在project.spring启动执行器中使用hibernate-entitymanager依赖检测到这个和auto config实体管理器。删除此依赖关系后禁用HibernateJpaAutoConfiguration工作正确:D

答案 1 :(得分:1)

尝试此操作以禁用数据源自动配置:

import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.context.annotation.*;

@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}
相关问题