2

以下のコードは、最後の挿入 ID に対して常にゼロを返します。このコードの何が問題なのか教えてください。

JdbcTemplate insert = new JdbcTemplate(dataSource);

        insert.update("INSERT INTO item (price, item_category) VALUES(?,?)",
            new Object[] { beverage.getPrice(), beverage.getItemCategory() });
        int id = insert.queryForInt( "SELECT last_insert_id()" );
        System.out.println(id);
        return insert.update("INSERT INTO beverage (id, name, quantity,size) VALUES(?,?,?,?)", new Object[] { id,beverage.getName(), beverage.getQuantity(),beverage.getSize() });
4

1 に答える 1

4

上記のコード全体をトランザクションでラップする必要があります。それ以外の場合JdbcTemplateは、すべてのステートメントに対してプールから別の接続を使用できlast_insert_id()、トランザクションに関連付けられます。

@Transactional内で JDBC 呼び出しを使用またはラップしますTransactionTemplate

于 2012-09-02T15:02:26.677 に答える