Этот вопрос был задан пару лет назад, но ответ мне не помог.Я добавил предложенные аннотации в конфиг и дао.Я уверен, что 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>