簡體   English   中英

使用 Spring 和 Hibernate 自動創建/更新表

[英]Auto create/update Tables using Spring and Hibernate

我有一個基於Spring + Hibernate的應用程序,其中大多數屬性是使用注釋設置的。

我的AppConfig 類看起來像:

//package declarations and imports 

@EnableWebMvc
@Configuration
@ComponentScan({ "com.package.subpackage.*" })
@Import({ SecurityConfig.class })
public class AppConfig {

    @Bean(name = "dataSource")
    public DriverManagerDataSource dataSource() {
        DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
        driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver");
        driverManagerDataSource.setUrl("jdbc:mysql://localhost:3306/fur");
        Properties prop = new Properties();
        prop.setProperty("hibernate.hbm2ddl.auto", "create");
        driverManagerDataSource.setConnectionProperties(prop);
        driverManagerDataSource.setUsername("root");
        driverManagerDataSource.setPassword("");
        return driverManagerDataSource;
    }

    //other methods...

}

我的問題是與我的 Java 類關聯的表不是在我的數據庫中自動創建的

我不添加我的類的例子,因為我認為它在配置中的問題,但請讓我知道是否需要。

您正在數據源上設置包含hibernate.hmb2ddl.auto的屬性,它對 Hibernate 等 ORM 層一無所知。 您應該將這些屬性傳遞給LocalSessionFactoryBuilder bean 等。

您可以使用類似的配置來設置具有所需屬性的 Hibernate:

@Configuration
public class DatabaseConfig {

    // Data source, transaction manager, ... bean definitions omitted

    @Bean
    public LocalSessionFactoryBuilder sessionFactoryBuilder() {
        LocalSessionFactoryBuilder sfb = new LocalSessionFactoryBuilder(dataSource());
        sfb.scanPackages("com.example.app.model");
        // Hibernate/JPA properties
        Properties properties = new Properties();
        properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
        properties.put("hibernate.hbm2ddl.auto", "create");
        sfb.addProperties(properties);
        return sfb;
    }

    @Bean
    public SessionFactory sessionFactory() {
        return sessionFactoryBuilder().buildSessionFactory();
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM