我正在尝试更新一个应用程序上的一些数据并将 JMS 事件发送到不同的 JBOSS 服务器。侦听器将获取事件并尝试使用带有 dblink 的数据库视图读取数据。
最初,此视图没有该 ID 的数据。我使用其他应用程序更新数据,并在提交 JMS 事件后使用该 ID 发送。一旦侦听器收到此 ID,它将使用数据库视图获取数据。
我的问题是,在使用 JPA/HIBERNATE 读取时,它仍在读取作为空白的旧数据。
调用dao层的服务层正在使用以下事务
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
The DAO Layer is using
@PersistenceContext
private EntityManager em;
Query query = em.createNativeQuery(sbQuery.toString());
我尝试了以下所有选项,但它似乎不起作用。
em.clear();
em.getEntityManagerFactory().getCache().evictAll();
em.flush();
query.setHint("javax.persistence.cache.storeMode", CacheStoreMode.BYPASS);
注意:它起作用的唯一方法是,在我收到事件后,如果我执行了一个staright jdbc,我可以从该视图中获取数据,但使用 spring/hibernate 配置时,它会显示为空白。
任何想法为什么它不能正常工作,为什么我需要对调用做一个staright jdbc?