JDBC自动提交不使用PostgreSQL 9驱动程序

时间:2015-08-20 08:23:05

标签: java spring postgresql jdbc

我有一个带有从JDNI加载的PostgreSQL数据源的Spring应用程序:

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/DB" expected-type="javax.sql.DataSource" />

我用JDBCTemplate

连接了它
// DataSource is Autowired
jdbcTemplate = new JdbcTemplate(dataSource);

和自动提交设置为true

<Resource name="jdbc/DB" auth="Container" type="javax.sql.DataSource"
          username="postgres" password="localPostgres"
          url="jdbc:postgresql://localhost:5432/postgres"
          driverClassName="org.postgresql.Driver"
          defaultAutoCommit="true"/>

当我尝试使用简单的SQL insert语句插入项时,更改不会提交到数据库。

jdbcTemplate.update("INSERT INTO items (name, surname) VALUES ('samantha', 'catania')";

直接在数据库控制台中输入SQL语句,即插入项目,即SQL是正确的。

任何想法可能是什么问题?

1 个答案:

答案 0 :(得分:0)

这个问题正在发生,因为我正在使用Spring Batch和我在Spring Batch创建的事务中完成的提交。在我的方法中添加@Transactional(Transactional.TxType.REQUIRES_NEW)可以解决问题。 这个article描述了使用@Transactional时常见的陷阱,这有助于我找到解决问题的方法。