Hibernate свойство hibernate.default_schema не работает должным образом - PullRequest
0 голосов
/ 15 мая 2019

Я хочу добавить параметризованное имя базы данных, которое используется в собственных запросах. Я использовал этот URL-адрес для реализации https://vladmihalcea.com/how-to-resolve-the-hibernate-global-database-schema-and-catalog-for-native-sql-queries/ Я тестировал поэтапно и тестировал environemnt, и все работает нормально, за исключением имени базы данных.Ниже представлен мой код

application.yml

hibernate:
show_sql: true
format_sql: true
dialect: org.hibernate.dialect.MySQLDialect
hbm2ddl.auto: false
default_schema: student

SummitRepository.java

@Query(value = "select * from {h-schema}summit", nativeQuery = true)
public List<Summit> getActiveUpcomingSummitsForChannelIds();

TestDbConfig

public class TestDbConfig {  

    @Primary
    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {

        HibernateJpaVendorAdapter hibernateJpa = new HibernateJpaVendorAdapter();
        hibernateJpa.setDatabasePlatform(env
                .getRequiredProperty("hibernate.dialect"));
        hibernateJpa.setShowSql(env.getRequiredProperty("hibernate.show_sql",
                Boolean.class));

        LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
        emf.setDataSource(datasource());
        emf.setJpaVendorAdapter(hibernateJpa);
        emf.setPackagesToScan("com.xxx.student.model");
        Map<String, String> jpaProps = new HashMap<String, String>();

        jpaProps.put("hibernate.dialect",
                env.getRequiredProperty("hibernate.dialect"));
        jpaProps.put("hibernate.format_sql",
                env.getRequiredProperty("hibernate.format_sql"));
        jpaProps.put("hibernate.hbm2ddl.auto",
                env.getRequiredProperty("hibernate.hbm2ddl.auto"));
        jpaProps.put("hibernate.show_sql",
                env.getRequiredProperty("hibernate.show_sql"));
        ***jpaProps.put("hibernate.default_schema",
                env.getRequiredProperty("hibernate.default_schema"));***

        emf.setJpaPropertyMap(Collections.singletonMap(
                "javax.persistence.validation.mode", "none"));
        return emf;
    }

Запрос на сгенерированный фон Hibernate

 select * from summit

Фактический вывод

select * from summit

Ожидаемый результат

select * from student.summit

Имя базы данных отсутствует.Куда я иду не так?Спасибо заранее.

1 Ответ

0 голосов
/ 15 мая 2019

Укажите схему по умолчанию в вашем файле persistence.xml:

<property name="hibernate.default_schema" value="yourSchemaName" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...