首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate的属性hibernate.default_schema不能正常工作

Hibernate的属性hibernate.default_schema不能正常工作
EN

Stack Overflow用户
提问于 2019-05-15 09:43:38
回答 1查看 1.6K关注 0票数 1

我想添加用于本地查询的参数化数据库名,我引用这个URL来实现我在stage和测试环境中测试过的https://vladmihalcea.com/how-to-resolve-the-hibernate-global-database-schema-and-catalog-for-native-sql-queries/,除了缺少数据库名之外,一切都很好。下面是我的代码

application.yml

代码语言:javascript
复制
hibernate:
show_sql: true
format_sql: true
dialect: org.hibernate.dialect.MySQLDialect
hbm2ddl.auto: false
default_schema: student

SummitRepository.java

代码语言:javascript
复制
@Query(value = "select * from {h-schema}summit", nativeQuery = true)
public List<Summit> getActiveUpcomingSummitsForChannelIds();

TestDbConfig

代码语言:javascript
复制
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后台生成的查询

代码语言:javascript
复制
 select * from summit

实际输出

代码语言:javascript
复制
select * from summit

预期输出

代码语言:javascript
复制
select * from student.summit

缺少数据库名。我哪里出问题了?谢谢你的进阶。

EN

回答 1

Stack Overflow用户

发布于 2019-05-15 09:49:37

在persistence.xml文件中指定默认模式:

代码语言:javascript
复制
<property name="hibernate.default_schema" value="yourSchemaName" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56146268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档