Spring Data JPA,无法从CommandLineRunner Bean写入db

时间:2016-03-02 19:10:21

标签: spring spring-data spring-data-jpa

我跟随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;
  }
}

0 个答案:

没有答案