簡體   English   中英

如何在一次打開session中刪除具有一級緩存和JPA的實體?

[英]How to remove entity with first level cache and JPA in one open session?

在我的持久層中,我有remove方法,該方法將刪除已刪除的 state 和EntitySession中的實體以提交更改。

  • EntitySession
transaction = entityManager.getTransaction();
  • 刪除方法
    public BehindCacheBuilder<R, V> remove(Object object) {
        entityManager.remove(object);
        return this;
    }
  • 並提交交易
transaction.commit();

但是當我執行該方法時,不會從數據源中刪除任何內容。

與任何后寫緩存一樣,持久性上下文需要刷新(在您的情況下提交,這與刷新不同)以便將內存持久性 state 與底層數據源同步。

因此,首先確保您要刪除的實體首先出現在托管 state 中,然后嘗試remove以更改 state 以在刷新(提交)后刪除實體。

    public BehindCacheBuilder<R, V> remove(Class<?> type, Object object) {
        entityManager.remove(entityManager.find(type, object));
        return this;
    }

在這里,我們將要刪除的實體帶到托管state。

在此處輸入圖像描述

暫無
暫無

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

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