gpt4 book ai didi

java - 使用 Spring 和 Hibernate 自动创建/更新表

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:57:31 25 4
gpt4 key购买 nike

我有一个基于 Spring + Hibernate 的应用程序,其中大多数属性是使用注解 设置的。 p>

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

}

关于java - 使用 Spring 和 Hibernate 自动创建/更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32813041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com