簡體   English   中英

在春季使用JPA在Oracle上進行REPEATABLE_READ

[英]REPEATABLE_READ on Oracle using JPA in Spring


當我嘗試使用彈簧注釋將隔離級別設置為Oracle DB上的REPEATABLE_READ時,我得到:
java.sql.SQLException:READ_COMMITTED和SERIALIZABLE是唯一有效的事務級別。 -(ORA-17030)

這是解決這個問題的方法嗎?

@Transactional(isolation = Isolation.REPEATABLE_READ)
@Override
public List<ToMq> getAndChange1000NotForwarded() {
    String queryText = "SELECT c FROM ToMq c WHERE c.forwarded = 0 AND";
    TypedQuery<ToMq> query = em.createQuery(queryText, ToMq.class);
    query.setMaxResults(1000);
    List<ToMq> resultList = query.getResultList();

    Date current = new Date();
    for (ToMq toMq : resultList) {
        toMq.setForwarded(Boolean.TRUE);
        toMq.setForwardTimestamp(current);
    }
    save(resultList);

    return resultList;
}

ORA-17030錯誤消息是Oracle JDBC驅動程序產生的JDBC錯誤消息。 根據Oracle 11g文檔,支持以下數據庫事務隔離級別:

  • 已提交讀(默認)
  • 可序列化
  • 只讀

因此,不可能對Oracle數據庫強制執行重復讀取 (ANSI / ISO)隔離級別。

暫無
暫無

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

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