2015-04-20 16 views
5

Ich möchte, dass meine Spring Application das DB Schema und die Tabellen automatisch generiert ... Ich habe ein paar Q & A zu diesem Thema gelesen und ich habe meine DB URL eingestellt :H2 DB im Frühling Boot Hibernate erzeugt kein Db Schema

H2DataSource.setUrl ("jdbc: h2: mem: tmp.db; INIT = CREATE SCHEMA IF NOT GPSTracker VORHANDEN");

und ich habe meine Entities kommentierte wie:

@Entity
@Table (name = "tblGps", schema = "GPSTracker")

aber das DB-Schema ist noch nicht erstellt.

Hier ist meine Protokollausgabe. Hibernate versucht, die Tabellen zu erstellen, kann das Schema jedoch nicht finden!

Was mache ich falsch? Irgendwelche Vorschläge?

Protokollausgabe

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

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

@pvgoddijn i c Ich erinnere mich nicht genau, und ich kann den Code jetzt nicht finden. Aber ich denke, es war, dass ich LocalEntityManagerFactory anstelle von EntityManagerFactory ... oder so zurückgeben musste. Viel Glück! vielleicht kann ich den Code in den nächsten Tagen finden ...

Antwort

2

Wenn Sie Ihre Datenquelle erstellen, müssen Sie die Eigenschaft hbm2ddl.auto festlegen, damit die Datenbank beim Start erstellt/aktualisiert wird.

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

Sie auch die Eigenschaft in Ihrer hibernate.cfg.xml Datei einstellen könnte

Andere mögliche Werte sind: validate | aktualisieren | erstellen | create-Drop

Weitere Informationen über diese und andere Eigenschaften finden Sie unter: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-optional

+0

Dank, aber für die Kopie-Pasters unter uns: properties.put ("hibernate.hbm2ddl.auto", "update") ; – codesmith

Verwandte Themen