2017-02-03 2 views
1

Versuchen, jdbcTemplate.update (String sql) zu verstehen, die sich merkwürdig verhält.jdbcTemplate.update (String sql) verhält sich seltsam

Ich habe eine Methode:

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; 
} 

Meine Tabellenstruktur ist:

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) 

Jetzt ist die Frage: Nach der Ausführung dieser Methode werden Daten kommt nicht in DB-Tabelle. Ich habe versucht zu debuggen und Zeiger zeigt den Wert von resultsReturned als 1 was bedeutet, dass Abfrage ausgeführt wird. Ich verstehe jetzt nicht, was hier falsch ist.

debug pointer showing resultsReturned value as 1

Wie soll ich jetzt vorgehen? Ich habe versucht, SQL-Abfrage manuell ausführen und es ist in Ordnung, wenn ich es manuell ausführen, aber es nicht von "jdbcTemplate.update (sql)" -Methode ausführen.

+0

Hat es in die Datenbank übernommen? Möglicherweise wird das Commit nicht ausgelöst. – Nilesh

+0

Meine automatische Festschreibung ist aktiviert. es ist nicht aus. Trotzdem muss ich es manuell machen? – Shashank

+0

Nopes dann ist es die Datenbank, die es für Sie tun wird. – Nilesh

Antwort

0

Danke Nilesh und Maciej Kowalski für den Hinweis. Mein Autocommit war tatsächlich ausgeschaltet. Hinzufügen von @Transactional Annotation hat für mich gearbeitet.

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