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 回答