我跟随Accessing Data with JPA guide并且在执行 CommandLineRunner Bean时出现问题。手动配置我的数据库组件类时发生此问题。基本上,当我具有如下配置时它可以工作,并且当包含注释块时无法写入。
编辑 - 在JpaVendorAdaptor上启用setShowSql后,我可以看到尝试使用hibernate的select语句,但是没有尝试插入。调用存储库保存时没有错误,保存后检查ID保持为0。
我不知道某些内容是否配置不当,或者我是否完全错过了一个bean或其他内容。
@Component
public class RepoConfig {
@Value("${spring.datasource.driver-class-name}") private String driverClassName;
@Value("${spring.datasource.url}") private String url;
@Value("${spring.datasource.username}") private String username;
@Value("${spring.datasource.password}") private String password;
@Bean
DataSource dataSource() {
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName(driverClassName);
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
return ds;
}
// @Bean
// public JpaVendorAdapter jpaVendorAdapter() {
// HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
// adapter.setDatabase(Database.SQL_SERVER);
// adapter.setDatabasePlatform("org.hibernate.dialect.SQLServer2012Dialect");
// adapter.setShowSql(true);
// adapter.setGenerateDdl(false);
// return adapter;
// }
//
// @Bean
// public EntityManagerFactory entityManagerFactory() {
// LocalContainerEntityManagerFactoryBean emfb = new LocalContainerEntityManagerFactoryBean();
// emfb.setJpaVendorAdapter(jpaVendorAdapter());
// emfb.setDataSource(dataSource());
// emfb.setPackagesToScan("model.package");
// emfb.afterPropertiesSet();
// return emfb.getObject();
// }
//
// @Bean
// public PlatformTransactionManager transactionManager() {
// JpaTransactionManager txManager = new JpaTransactionManager();
// txManager.setEntityManagerFactory(entityManagerFactory());
// return txManager;
// }
//
@Bean
Flyway flyway() {
Flyway flyway = new Flyway();
flyway.setDataSource(dataSource());
flyway.migrate();
return flyway;
}
}