簡體   English   中英

JDBC自動提交不適用於PostgreSQL 9驅動程序

[英]JDBC Auto-Commit Not Working with PostgreSQL 9 Driver

我有一個帶有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插入語句插入項目時,所做的更改未提交到數據庫。

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

直接在數據庫控制台中輸入SQL語句,即可插入該項,即SQL正確。

有什么想法可能是問題嗎?

發生此問題是因為我使用的是Spring Batch,而我的提交是在Spring Batch創建的事務中完成的。 @Transactional(Transactional.TxType.REQUIRES_NEW)添加到我的方法中可以解決此問題。 本文介紹了使用@Transactional時遇到的常見陷阱,這有助於我找到問題的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM