我将SEAM与JPA(实现为Seam托管持久性上下文)一起使用,在后备bean中,我将一组实体(ArrayList)加载到后备bean中。
如果不同的用户修改了另一个会话中的实体之一,而我希望将这些更改传播到会话中的集合中,则我有一种方法refreshList()并尝试了以下方法…
@Override
public List refreshList(){
itemList = itemStatusDAO.getCurrentStatus();
}
用以下查询
@SuppressWarnings("unchecked")
@Override
public List getCurrentStatus(){
String s = "SELECT DISTINCT iS FROM ItemStatus iS ";
s+="ORDER BY iS.dateCreated ASC";
Query q = this.getEntityManager().createQuery(s);
return q.getResultList();
}
重新执行查询,这只会返回我已经拥有的相同数据(我假设它正在使用一级缓存而不是访问数据库)
@Override
public List refreshList(){
itemStatusDAO.refresh(itemList)
}
调用entityManager.refresh(),这应该从数据库刷新,但是javax.ejb.EJBTransactionRoll