Успешная вставка JdbcTemplate, но в базе данных нет строк - PullRequest
0 голосов
/ 27 апреля 2019

Этот вопрос был задан пару лет назад, но ответ мне не помог.Я добавил предложенные аннотации в конфиг и дао.Я уверен, что Template на самом деле подключается к БД, потому что я получаю соответствующие ошибки, когда у меня слишком маленький столбецВызов обновления выполняет вставку одной строки и возвращает 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 голосов
/ 27 апреля 2019

В области произошла глупая ошибка, из-за которой возникла исключительная ситуация и была отменена транзакция.По какой-то причине это исключение никогда не всплывало на поверхность, поэтому я не знал об этом, пока не прошел все по одной строке за раз.Мои извинения за тратить время людей.

...