2015-04-20 19 views
5

Tôi muốn ứng dụng Spring của tôi tự động tạo lược đồ và bảng DB ... Tôi đã đọc một số Q & A cho chủ đề này và tôi đã đặt URL DB của mình thành :H2 DB trong Spring Boot Hibernate không tạo Db Schema

H2DataSource.setUrl ("jdbc: h2: mem: tmp.db; INIT = CREATE SCHEMA NẾU KHÔNG EXISTS GPSTRACKER");

và tôi đã chú thích Các đối tượng của tôi như:

@Entity
@Table (name = "tblGps", lược đồ = "GPSTRACKER")

nhưng schema db vẫn chưa được tạo.

Đây là đầu ra nhật ký của tôi. Hibernate đang cố gắng tạo các bảng, nhưng không thể tìm thấy lược đồ!

Tôi đang làm gì sai? Bất kỳ đề xuất?

Log Output

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 không nhớ chính xác và tôi không thể tìm thấy mã ngay bây giờ. Nhưng tôi đoán đó là tôi cần phải trả lại LocalEntityManagerFactory thay vì EntityManagerFactory ... hoặc sth như thế. chúc may mắn! có thể tôi có thể tìm thấy mã trong những ngày tiếp theo ...

Trả lời

2

Khi tạo nguồn dữ liệu, bạn cần đặt thuộc tính hbm2ddl.auto để tạo/cập nhật cơ sở dữ liệu khi khởi động.

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

Bạn cũng có thể thiết lập thuộc tính trong file hibernate.cfg.xml bạn

giá trị có thể khác là: Validate | cập nhật | tạo | tạo thả

Thông tin thêm về vấn đề này và các tài sản khác có thể được tìm thấy tại địa chỉ: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-optional

+0

cảm ơn, nhưng đối với các bản sao-pasters giữa chúng ta: properties.put ("hibernate.hbm2ddl.auto", "cập nhật") ; – codesmith

Các vấn đề liên quan