簡體   English   中英

Hibernate JPA實體偵聽器@Pre和@Post無法正常工作

[英]Hibernate JPA Entity listener @Pre and @Post don't work as expected

我正在構建一個實時應用程序,並嘗試使用實體偵聽器使我的狀態保持最新。 基本思想是,每當業務邏輯區域發生更改時,我都會重新加載受影響的實體並協調更改。 這是MWE:

@PrePersist
public void PrePersist() {
    LoggerFactory.logger(App.class).info(" >>> PrePersist count: " + getStars().size());
}
@PostPersist
public void PostPersist() {
    LoggerFactory.logger(App.class).info(" >>> PostPersist count: " + getStars().size());
}
@PreRemove
public void PreRemove() {
    LoggerFactory.logger(App.class).info(" >>> PreRemove count: " + getStars().size());
}

@PostRemove
public void PostRemove() {
    LoggerFactory.logger(App.class).info(" >>> PostRemove count: " + getStars().size());
}
private List<Star> getStars() {
    EntityManager em = HibernateUtilJpa.getEntityManager();
    List<Star> l = new ArrayList<Star>();
    try {
        em.getTransaction().begin();
        l = em.createQuery("from Star", Star.class).getResultList();
        em.getTransaction().commit();
    } catch (Exception e) {
        em.getTransaction().rollback();
    } finally {
        em.close();
    }
    return l;
}

我正在使用一個單獨的API將星號插入/刪除到DB中。 我期望由於添加的項目,持久化后會顯示一個項目,而刪除后的內容將比刪除前少一個。 情況並非如此,持久化后和刪除后均顯示錯誤的項目數,因此持久化前與持久化后相同,並且刪除前與刪除后相同。 我確定它與Hibernate的緩存有關,但是我正在使用事務,並且所有事情都通過EntityManager所以我抓狂了。

文檔中

回調方法不得調用EntityManagerQuery方法!

實際上,行為是不確定的,因此您在示例中觀察到的結果。

暫無
暫無

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

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