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

问题描述 投票:0回答:1

这个问题在几年前被问过,但答案对我不起作用。我已将建议的注释添加到配置和dao中。我确信模板实际上是连接到数据库,因为当我的列太小时我遇到了适当的错误。更新调用正在执行单行插入,它返回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>
java sql-server spring jdbctemplate
1个回答
0
投票

该地区出现了一个愚蠢的错误,即抛出异常并解除了交易。出于某种原因,异常从未冒泡到表面,所以直到我一次遍历一行,我才意识到这一点。我为浪费人们的时间而道歉。

© www.soinside.com 2019 - 2024. All rights reserved.