[英]Spring read-only transaction with locked table
我的彈簧配置:
<jee:jndi-lookup id="testDataSource" jndi-name="java:testDS" />
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="testDataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
我的Java方法:
@Transactional(readOnly = true)
public List find() {
jdbcTemplate.query("SELECT * FROM my_table;");
}
如果我直接在數據庫( MySQL
)上使用以下腳本:
LOCK TABLES my_table WRITE;
然后嘗試通過只讀事務運行Java代碼,它仍在等待表被解鎖。
由於事務設置為只讀,它不應該返回數據嗎?
謝謝
不可以,因為WRITE鎖定會阻止未持有該鎖定的任何人讀取和寫入表。 如果改用READ,則可以執行查詢。
順便說一句,readOnly直接在數據庫中不執行任何操作,這僅是向ORM層暗示不希望事務執行任何寫操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.