Hibernate架构迁移设置命名策略

时间:2016-04-05 08:37:33

标签: java spring hibernate

我有一个Spring JPA应用程序默认使用SpringNamingStrategy,非常接近ImprovedNamingStrategy

我正在编写一个使用hibernate类生成脚本以进行架构更新的帮助程序。

    public class MigrationHelper {

        public static void main(String[] args) throws SQLException {
            DataSource dataSource = DataSourceBuilder.create()
                    .driverClassName("oracle.jdbc.driver.OracleDriver")
                    .url("jdbc:oracle:thin:@localhost:1521:ORCL")
                    .username("mqcompare")
                    .password("mqcompare")
                    .build();

                LocalSessionFactoryBuilder sessionFactory = new LocalSessionFactoryBuilder(dataSource);
                sessionFactory.scanPackages("com.company.mqmsgcom.entity");
                //this doesen't work
                sessionFactory.setProperty("hibernate.ejb.naming_strategy", "org.springframework.boot.orm.jpa.hibernate.SpringNamingStrategy");
                Dialect dialect = new Oracle10gDialect();
                DatabaseMetadata metadata = new DatabaseMetadata(dataSource.getConnection(), dialect, sessionFactory);
                List<SchemaUpdateScript> scripts = sessionFactory.generateSchemaUpdateScriptList(dialect, metadata);

                Formatter formatter = FormatStyle.DDL.getFormatter();
                for (SchemaUpdateScript script : scripts) {
                   System.err.println(formatter.format(script.getScript()) + ";");
                }
        }
    }

脚本参考:here

如何在此代码中设置命名策略?

编辑:Hibernate版本是4.3.11 Final。

1 个答案:

答案 0 :(得分:1)

hibernate.ejb.naming_strategy用于JPA。您可以按LocalSessionFactoryBuilder#setNamingStrategy()设置命名策略。

看起来,Hibernate 4中没有一个属性可以将命名策略设置为Configuration作为属性。