JdbcTemplate插入成功,但数据库中没有行

时间:2019-04-27 11:28:26

标签: java sql-server spring jdbctemplate

这个问题是几年前提出的,但是答案对我不起作用。我已经将建议的注释添加到配置和dao中。我敢肯定,Template实际上是在连接数据库,因为当列太小时出现适当的错误。 update调用正在执行单行插入,并且返回1毫无例外。但是,当我检查数据库时,其中没有数据。

任何帮助将不胜感激。

配置:

@Configuration
@EnableTransactionManagement
@ComponentScan("com.XXX.query.repository")
public class SqlConfig {
  @Autowired
  private Environment env;

  @Bean
  public DataSource getDatasource() {
    DriverManagerDataSource datasource = new DriverManagerDataSource();
    datasource.setDriverClassName(env.getProperty("sql-datasource.driverClassName"));
    datasource.setUrl(env.getProperty("sql-datasource.url"));
    datasource.setUsername(env.getProperty("sql-datasource.username"));
    datasource.setPassword(env.getProperty("sql-datasource.password"));

    return datasource;
  }

  @Bean
  public JdbcTemplate jdbcTemplate() {
    return new JdbcTemplate(getDatasource());
  }

DAO:

@Repository
public class SqlRepositoryImpl implements SqlRepository {

  @Autowired
  private JdbcTemplate template;

<snip>

  @Transactional
  @Override
  public void addOrder(String foo, String bar, String bat, String cat) {

    int i;
    try {
      // we may already have this data
      System.out.println("here");
      i = template.update(
        "insert into someTable "
          + "(A, B, C, D)"
          + " values (?,?,?,?)",
        foo, bar, bat, cat);
    } catch (DataAccessException ex) {
      checkForDupeKey(ex);
    }

<snip>

1 个答案:

答案 0 :(得分:0)

该地区发生了一个愚蠢的错误,引发了异常并取消了交易。由于某种原因,异常从未冒出表面,因此直到我一次只完成一行之后,我才意识到这一点。我为浪费人们的时间而道歉。