[英]H2 DB in Spring Boot Hibernate does not generate Db Schema
我希望我的Spring應用程序自動生成數據庫模式和表...我已經閱讀了這個主題的一些問答,並且我將我的數據庫URL設置為:
H2DataSource.setUrl(“jdbc:h2:mem:tmp.db; INIT = CREATE SCHEMA IF NOT AVIS TOTRTS GPSTRACKER”);
我注釋了我的實體,如:
@實體
@Table(name =“tblGps”,schema =“GPSTRACKER”)
但仍未創建db模式。
這是我的日志輸出。 Hibernate正在嘗試創建表,但找不到架構!
我究竟做錯了什么? 有什么建議?
日志輸出
2015-04-20 22:29:38.211 INFO 7056 --- [ost-startStop-1] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [
name: default
...]
2015-04-20 22:29:38.356 INFO 7056 --- [ost-startStop-1] org.hibernate.Version : HHH000412: Hibernate Core {4.3.8.Final}
2015-04-20 22:29:38.360 INFO 7056 --- [ost-startStop-1] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2015-04-20 22:29:38.362 INFO 7056 --- [ost-startStop-1] org.hibernate.cfg.Environment : HHH000021: Bytecode provider name : javassist
2015-04-20 22:29:38.745 INFO 7056 --- [ost-startStop-1] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {4.0.5.Final}
2015-04-20 22:29:38.899 INFO 7056 --- [ost-startStop-1] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2015-04-20 22:29:39.202 INFO 7056 --- [ost-startStop-1] o.h.h.i.ast.ASTQueryTranslatorFactory : HHH000397: Using ASTQueryTranslatorFactory
2015-04-20 22:29:39.795 INFO 7056 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000227: Running hbm2ddl schema export
2015-04-20 22:29:39.801 ERROR 7056 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000389: Unsuccessful: drop table GPSTRACKER.tbl_gps if exists
2015-04-20 22:29:39.801 ERROR 7056 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : Schema "GPSTRACKER" nicht gefunden
Schema "GPSTRACKER" not found; SQL statement:
drop table GPSTRACKER.tbl_gps if exists [90079-185]
EntityManagerFactory的
@Bean
public EntityManagerFactory entityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
vendorAdapter.setShowSql(true);
vendorAdapter.setDatabasePlatform(MyAppSettings.getDbPlattform());
HibernateJpaDialect jpd = new HibernateJpaDialect();
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaDialect(jpd);
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan(MyAppSettings.packagesToScan);
factory.setDataSource(MyDataSource());
return factory.getObject();
}
數據源
DriverManagerDataSource H2DataSource = new DriverManagerDataSource();
H2DataSource.setDriverClassName("org.h2.Driver");
H2DataSource.setUrl("jdbc:h2:mem:tmp.db;INIT=CREATE SCHEMA IF NOT EXISTS GPSTRACKER");
H2DataSource.setUsername("sa");
H2DataSource.setPassword("");
@pvgoddijn我記不起來了,我現在找不到代碼。 但我想我需要返回LocalEntityManagerFactory
而不是EntityManagerFactory
......或者像那樣。 祝好運! 也許我可以在接下來的幾天找到代碼......
創建數據源時,需要設置hbm2ddl.auto屬性,以便在啟動時創建/更新數據庫。
Properties properties = new Properties();
properties.put("hibernate.hbm2ddl.auto", "update");
H2DataSource.setConnectionProperties(properties);
您還可以在hibernate.cfg.xml文件中設置該屬性
其他可能的值有:validate | 更新| 創建| 創建降
有關此屬性和其他屬性的更多信息,請訪問: http : //docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-optional
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.