我正在构建一个实时应用程序,并尝试使用实体侦听器使我的状态保持最新。基本思想是,每当业务逻辑区域发生更改时,我都会重新加载受影响的实体并协调更改。这是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
所以我抓狂了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句