2017-02-03 8 views
1

이상하게 작동하는 jdbcTemplate.update (String sql)을 이해하려고합니다.jdbcTemplate.update (String sql)이 이상하게 작동 함

나는 하나 개의 방법이 있습니다

public int insertStartSyncDate() { 
    String sql = "INSERT INTO iwpro_imp."+jobStatusTable+" (job_name,status,start_time,comment) VALUES ('sswltimport', 'running', NOW(), 'Just started.')"; 
    int resultsReturned = 0; 
    try{ 
     resultsReturned = jdbcTemplate.update(sql); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
    return resultsReturned; 
} 

내 테이블 구조는 다음과 같습니다

mysql> desc import_job_status; 
+------------+------------------------------------+------+-----+-------------------+----------------+ 
| Field  | Type        | Null | Key | Default   | Extra   | 
+------------+------------------------------------+------+-----+-------------------+----------------+ 
| job_id  | bigint(20) unsigned    | NO | PRI | NULL    | auto_increment | 
| job_name | varchar(20)      | NO | MUL | NULL    |    | 
| status  | enum('running','success','failed') | NO | MUL | running   |    | 
| start_time | timestamp       | NO | MUL | CURRENT_TIMESTAMP |    | 
| end_time | timestamp       | YES | MUL | NULL    |    | 
| comment | text        | YES |  | NULL    |    | 
+------------+------------------------------------+------+-----+-------------------+----------------+ 
6 rows in set (0.00 sec) 

이제 문제는이 방법의 실행 후 를, 데이터는 DB 테이블에 오지 않아. 디버깅을 시도하고 포인터가 resultsReturned의 값을 1로 표시하여 쿼리가 실행되었음을 의미합니다. 나는 여기서 무엇이 잘못되었는지 이해하지 못한다.

debug pointer showing resultsReturned value as 1

어떻게 지금 진행해야합니까? 나는 SQL 쿼리를 수동으로 실행하려고 시도했지만 수동으로 실행할 때 "jdbcTemplate.update (sql)"메소드에서 실행되지 않습니다.

+0

데이터베이스에 커밋 되었습니까? 아마도 커밋이 시작되지 않았을 수 있습니다. – Nilesh

+0

내 자동 커밋이 사용 중입니다. 그것의 아닙니다. 여전히 수동으로해야합니까? – Shashank

+0

Nopes 다음으로 데이터베이스를 사용하면됩니다. – Nilesh

답변

0

힌트는 Nilesh와 Maciej Kowalski에게 감사드립니다. 내 자동 커밋이 실제로 해제되었습니다. 덧붙여서 @Transactional 주석이 추가되었습니다.

@Transactional(value="transactionManager_iwpro_imp", rollbackFor = Exception.class) 
    public int insertStartSyncDate() { 
// ...... 
}