[英]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.