繁体   English   中英

Hibernate config.init之前运行SQL脚本

[英]Hibernate config.Run sql script before init

我在项目中使用的是H2-in-memory数据库,我想在启动之前运行少量sql脚本。 这是我的配置:

hibernate.dialect = org.hibernate.dialect.H2Dialect hibernate.show_sql = true hibernate.hbm2ddl.auto = none hibernate.hbm2ddl.import_files =“ / db / scripts / schema.sql,/ db / scripts / insert-users.sql

但这是行不通的。 如果我将hibernate.hbm2ddl.auto更改为createcreate-drop它将尝试基于带注释的实体创建表。 但是我想通过创建表和插入用户来运行自己的sql脚本。 Java配置:

@Bean
public LocalSessionFactoryBean sessionFactory() {
    LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
    sessionFactory.setDataSource(restDataSource());
    sessionFactory.setPackagesToScan(
            new String[]{"org.training.ytaranau"});
    sessionFactory.setHibernateProperties(hibernateProperties());

    return sessionFactory;
}
 Properties hibernateProperties() {
    return new Properties() {
        {
            setProperty("hibernate.hbm2ddl.auto",
                    env.getProperty("hibernate.hbm2ddl.auto"));
            setProperty("hibernate.dialect",
                    env.getProperty("hibernate.dialect"));
            setProperty("hibernate.globally_quoted_identifiers",
                    "true");
            setProperty("hibernate.hbm2ddl.import_files",
                    env.getProperty("hibernate.hbm2ddl.import_files"));
        }
    };
}

我能做到吗?

您可以在下面为休眠设置属性,然后可以执行一些脚本。

javax.persistence.schema-generation.create-source
javax.persistence.sql-load-script-source

     <property name="javax.persistence.schema-generation.drop-script-source" value="META-INF/drop-script.sql"/>
     <property name="javax.persistence.schema-generation.create-script-source" value="META-INF/create-script.sql"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM