由于您使用的是 MySql,我建议您尝试以下 .properties 配置:
spring.datasource.username=<user_name>
spring.datasource.password=<password>
spring.datasource.url=jdbc:mysql://localhost:3306/<db_name>?createDatabaseIfNotExist=true&useSSL=false
我在一些 Spring 应用程序上使用它,它对我来说很好用。这将自动创建数据库并运行 DDL 以创建您的初始模式。请注意,我将它与处理设置和管理所有内容的自定义 DatabaConfiguration 类一起使用。类似于:
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories("<where_repos_are_found>")
public class DatabaseConfiguration {
private static final String[] PACKAGES_TO_SCAN = { "<packages_locations>" };
private static final String PROPERTY_NAME_DATABASE_PASSWORD = "spring.datasource.password";
private static final String PROPERTY_NAME_DATABASE_URL = "spring.datasource.url";
private static final String PROPERTY_NAME_DATABASE_USERNAME = "spring.datasource.username";
private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect";
private static final String PROPERTY_NAME_HIBERNATE_DATABASE_DRIVER = "hibernate.connection.driver_class";
private static final String PROPERTY_NAME_HIBERNATE_DDL = "hibernate.hbm2ddl.auto";
private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql";
private static final String PROPERTY_NAME_HIBERNATE_FORMAT_SQL = "hibernate.format_sql";
private static final String PROPERTY_NAME_HIBERNATE_USE_SQL_COMMENTS = "hibernate.use_sql_comments";
private Environment env;
@Autowired
public DatabaseConfiguration(Environment env) { this.env = env; }
@Bean
public DataSource getDatasource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUrl(env.getRequiredProperty(PROPERTY_NAME_DATABASE_URL));
dataSource.setUsername(env.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME));
dataSource.setPassword(env.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD));
return dataSource;
}
private Properties getHibernateProperties() {
Properties properties = new Properties();
properties.put(PROPERTY_NAME_HIBERNATE_DATABASE_DRIVER, env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_DATABASE_DRIVER));
properties.put(PROPERTY_NAME_HIBERNATE_DIALECT, env.getProperty(PROPERTY_NAME_HIBERNATE_DIALECT));
properties.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL, env.getProperty(PROPERTY_NAME_HIBERNATE_SHOW_SQL));
properties.put(PROPERTY_NAME_HIBERNATE_FORMAT_SQL, env.getProperty(PROPERTY_NAME_HIBERNATE_FORMAT_SQL));
properties.put(PROPERTY_NAME_HIBERNATE_USE_SQL_COMMENTS, env.getProperty(PROPERTY_NAME_HIBERNATE_USE_SQL_COMMENTS));
properties.put(PROPERTY_NAME_HIBERNATE_DDL, env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_DDL));
return properties;
}
@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(getDatasource());
entityManagerFactoryBean.setPackagesToScan(PACKAGES_TO_SCAN);
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
entityManagerFactoryBean.setJpaVendorAdapter(vendorAdapter);
entityManagerFactoryBean.setJpaProperties(getHibernateProperties());
return entityManagerFactoryBean;
}
@Bean
public JpaTransactionManager transactionManager() {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactoryBean().getObject());
return transactionManager;
}
}
此外,出于任何目的,我使用 hibernate 自己的属性而不是 Spring 的属性,所以一个例子就是这个:
hibernate.hbm2ddl.auto=create
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.use_sql_comments=true
hibernate.connection.driver_class=com.mysql.jdbc.Driver
最后关于你得到的 404,我认为你点击的链接可能是错误的。我建议打开 debug 日志属性,以便在应用程序启动后更好地查看您的各种映射。
你可以通过设置logging.level.<package_name_of_your_app>=debug来做到这一点