jor*_*cke 4 spring spring-data spring-boot
我一直在关注Spring Boot的开发,有时在初始版本0.0.5-BUILD-SNAPSHOT
和我正在使用的当前版本之间,1.0.0.RC1
我不再运行我的import.sql
脚本了.
这是我的配置LocalContainerEntityManager
和JpaVendorAdapter
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(
DataSource dataSource, JpaVendorAdapter jpaVendorAdapter) {
LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();
lef.setDataSource(dataSource);
lef.setJpaVendorAdapter(jpaVendorAdapter);
lef.setPackagesToScan("foo.*");
return lef;
}
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
hibernateJpaVendorAdapter.setShowSql(true);
hibernateJpaVendorAdapter.setGenerateDdl(true);
hibernateJpaVendorAdapter.setDatabase(Database.POSTGRESQL);
return hibernateJpaVendorAdapter;
}
Run Code Online (Sandbox Code Playgroud)
有趣的hibernate.hbm2ddl.auto
似乎还在运行,我认为这是我的定义的一部分SpringBootServletInitializer
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {
Run Code Online (Sandbox Code Playgroud)
但是,我还注意到生成的表格不再有下划线并在生成时改变了它们的形状?
但是,这可能是更新我的org.postgresql
版本的结果:
先前:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.2-1004-jdbc41</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
现在:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.3-1100-jdbc41</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我也不得不改变pggetserialsequence
,以pg_get_serial_sequence
获得脚本从根本上运行pgadmin
?
我想我正在混淆正在发生的事情,但最重要的是我想回到我的import.sql
跑步.
我一直在关注示例项目:https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-jpa
而且他们import.sql
也没有参加比赛1.0.0-BUILD-SNAPSHOT
Dav*_*yer 13
该import.sql
脚本是我认为的Hibernate功能(不是Spring或Spring Boot).它必须在示例中运行,否则测试将失败,但无论如何只有在ddl-auto设置为创建表时它才会运行.使用Spring Boot,您应确保将spring.jpa.hibernate.ddl-auto
其设置为"create"或"create-drop"(后者是嵌入式数据库的Boot中的默认值,但不适用于其他数据库,例如postgres).
如果你要无条件地运行SQL脚本,默认情况下,春季启动,如果你把它在运行的休眠设置一个独立的classpath:schema.sql
(或classpath:schema-<platform>.sql
地方<platform>
是你的情况"的Postgres").
我想你可以删除它JpaVendorAdapter
,也可以删除LocalContainerEntityManagerFactoryBean
(除非你正在使用persistence.xml
)并让Boot控制.可以使用@EntityScan
注释(Spring Boot中的新增功能)设置要扫描的软件包.
Boot 1.0.0.RC1中更改了默认的表命名方案(因此与postgres依赖关系无关).我不确定在RC2中是否仍然如此,但无论如何你可以通过设置回到旧的Hibernate默认值spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
.
归档时间: |
|
查看次数: |
12573 次 |
最近记录: |