2015-04-20 20 views
5

üretmiyor Spring Uygulamamın DB şemasını ve tablolarını otomatik olarak oluşturmasını istiyorum ... Bu konuya Q & A okudum ve DB URL'mi :Spring Boot'da DB DB Hazırda bekletme Db Schema

H2DataSource.setUrl ("jdbc: h2: mem: tmp.db; dEĞİL GPSTracker VARSA INIT = CREATE SCHEMA");

ve ben gibi benim Varlıkları açıklamalı ettik:

@Entity
@ Tablo (name = "tblGps", şema = "GPSTracker")

ama db şema hala oluşturulmamış.

İşte günlük çıkışım. Hazırda bekletme tabloları oluşturmaya çalışıyor, ancak şemayı bulamıyor!

Neyi yanlış yapıyorum? Baska öneri? 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(); 
    } 

DataSource

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(""); 

ölçüm sonucu

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] 

@pvgoddijn i c Tam olarak hatırlamıyorum ve şu anda kodu bulamıyorum. Ama sanırım EntityManagerFactory ... LocalEntityManagerFactory yerine geri dönmek gerekiyordu ya da böyle sth. iyi şanslar! belki sonraki gün kodunu bulabilirim ...

cevap

2

Veri kaynağınızı oluştururken, başlangıçta veritabanının oluşturulması/güncellenmesi için hbm2ddl.auto özelliğini ayarlamanız gerekir. Ayrıca hibernate.cfg.xml dosyasında özelliğini ayarlayabilirsiniz

Properties properties = new Properties(); 
    properties.put("hibernate.hbm2ddl.auto", "update"); 
    H2DataSource.setConnectionProperties(properties); 

Diğer olası değerler şunlardır: validate | Güncelle | oluştur | oluşturmak bırak

bu ve diğer özellikleri hakkında

bilgiye bulunabilir: ama aramızda kopyalamaya karşı pasters için, http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-optional

+0

sayesinde: properties.put ("hibernate.hbm2ddl.auto", "güncelleme") ; – codesmith