2016-05-29 2 views
3

У меня есть весенний ботинок Project A, который зависит от проекта B. Проект B имеет некоторые ресурсы .hbm.xml. в проекте A для изменения конфигурации спящего я добавить DatabaseConfiguration @Configuration для изменения SessionFactoryКак отключить весеннюю загрузку HibernateJpaAutoConfiguration

@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 весенне boot: run запуск приложения и нормально, но когда я запускаю java -jar i получить исключение

Я не знаю, почему HibernateJpaAutoConfiguration start ??? после этого я изменить Application.java нравится это для исключения этого, но опять-таки не работает .when я скопировать HBM в Projecta .project бежать и нормально (с Java -jar)

@SpringBootApplication(exclude = {HibernateJpaAutoConfiguration.class }) 

обновление

после поиск и тестирование, я нашел проблему и решил, что. Причина проблемы заключалась в использовании зависимостей hibernate-entitymanager в project.spring. Привязка к загрузке обнаружила это и автоматически создала диспетчер конфигураций. После удаления этой зависимости отключить работу HibernateJpaAutoConfiguration корректно: D

+0

Что делает вас подумайте, что вам нужна простая 'SessionFactory', чтобы использовать файлы' hbm.xml'? Они отлично работают с менеджером сущности (и, как правило, также подбираются). Поэтому вместо того, чтобы усложнять вещи, просто используйте JPA. Мне показалось странным, что вы не получили сообщение об ошибке с bootRun (хотя я думаю, что знаю, почему, поскольку это правильно настраивает диспетчер сущностей JPA, а ваш упакованный банку не удается из-за невозможности прочитать ваши файлы hbm). –

+0

У меня есть много hbm, которые не могут мигрировать в jpa.why HibernateJpaAutoConfiguration исключить работу? –

+0

Пожалуйста, прочтите. Тот факт, что у вас есть файл HBM, не означает, что вы не можете использовать JPA. Любые аннотации или xml должны быть отображением для вашего объекта, для провайдера JPA на базе Hibernate он может использовать оба. Поэтому просто используйте JPA, поэтому просто используйте диспетчер сущностей, и он будет работать с файлом HBM. –

ответ

3

после поиска и тест, я нашел проблему, причиной проблемы было использование hibernat е-EntityManager зависимость в project.spring загрузки привода обнаружит это и автонастройки диспетчер сущностей .after удалить эту зависимость отключить HibernateJpaAutoConfiguration работу правильно: D

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 { 
} 
Смежные вопросы