【发布时间】:2015-04-19 18:52:27
【问题描述】:
我在 Netbeans (8.0.2) 中有一个使用 Postgresql DB (9,3) 的不断增长的项目。我的问题是一个不返回当前数据的查询。我使用插入或更新查询将数据发布到数据库,我知道这是可行的,因为我可以在 Postgresql pgadmin3 实用程序中查看表结果。 但是,当我执行以下操作时,它会返回旧数据,而不是当前值: 我正在使用 EJB 和会话 bean,这是来自 HrwattsModelFacade 会话 bean 的代码(注意对 em.clear() 的调用,这只是我获取当前数据的最新尝试):
String ntvqrystr = "SELECT hrwatts_model.*, ";
ntvqrystr += "(SELECT tracks.id FROM tracks where tracks.user_id=?1 and hrwatts_model.track_id=tracks.id) as trkid, ";
ntvqrystr += "(SELECT tracks.starttime FROM tracks where tracks.user_id=?2 and hrwatts_model.track_id=tracks.id) as trkstrt ";
ntvqrystr += "from hrwatts_model order by trkstrt;";
em.clear();
Query qry = em.createNativeQuery(ntvqrystr, HrwattsModel.class);
List<HrwattsModel> qlst;
qry.setParameter(1, usr.getId()).setParameter(2, usr.getId());
qlst=qry.getResultList();
return qlst;
我试过 em.clear(),见上面的代码和注解
@TransactionAttribute(REQUIRES_NEW)
除了等待 15-20 分钟或重新启动 glassifsh 之外似乎没有任何效果,然后我得到当前数据。注销/登录(清除会话)不起作用!
【问题讨论】:
-
日志事务分界(有关日志设置,请参阅 PostgreSQL 配置文件)。我想知道您是否正在使用看到旧快照的长
SERIALIZABLE事务。
标签: sql ejb postgresql-9.3 netbeans-8