1
我們已經使用1.3.5版本創建了一個spring引導項目。我們的應用程序與Mysql數據庫進行交互。 我們已經創建了一組jpa-repositories,其中我們使用findAll,findOne和其他自定義查詢方法。spring引導應用程序:jpa查詢返回舊數據
我們正面臨一個隨機發生的問題。以下是重現它的步驟:
使用spring-boot應用程序在db上觸發讀取查詢。
現在使用上述讀取查詢返回的記錄的mysql-console手動更改Mysql中的數據。
再次使用應用程序激發相同的讀取查詢。
第3步之後,我們應該收到第2步的修改結果,但是我們得到的是修改前的數據。
現在,如果我們再次使用應用程序啓動讀取查詢,它會爲我們提供正確的值。
此問題是隨機發生的。我們在應用程序中沒有使用任何類型的緩存。
在調試過程中,我發現jpa-repository代碼實際上調用了mysql,它也獲取最新結果,但是當這個調用返回到我們的應用服務時,令人驚訝的是返回值有舊數據。
請幫助我們確定可能的原因。
JPA /數據源的配置:
- spring.datasource.driverClassName = com.mysql.jdbc.Driver
- spring.datasource.url = JDBC:MySQL的://本地主機:3306/DBNAME ?autoReconnect的=真
- spring.datasource.username =根
- spring.datasource.password = XXX
- spring.jpa.database平臺= org.hibernate.dialect.MySQL5Dialect
- spring.datasource.max-WAIT = 15000
- spring.datasource.max活性= 100
- spring.datasource.max空閒= 20
- spring.datasource.test上借入=真
- spring.datasource.remove廢棄=真
- spring.datasource.remove廢棄超時= 300
- spring.datasource.default - 自動提交=假
- spring.datasource.validation查詢=選擇1
- spring.datasource.validation間隔= 30000
- hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
- 休眠。show_sql =假
- hibernate.hbm2ddl.auto =更新
服務方法:
@Override
@Transactional
public List<Event> getAllEvent() {
return eventRepository.findAll();
}
JPARepository:
public interface EventRepository extends JpaRepository<Event, Long> {
List<Event> findAll();
}
你調用commit;?向我們展示您的更新查詢和數據源以及JPA配置 –
Hitham,我已經更新了相關的詳細信息。更新查詢只是更改varchar屬性列的值。 –
鑑於您正在改變Hibernate背後的價值,那麼陳舊的值是否會來自它的第一級緩存? –