我的Util.java
课程中有一个静态列表:
...
private static List<MyEntity> mainList = new LinkedList<MyEntity>();
...
static {
fillMainList();
}
...
public static List<MyEntity> fillMainList() {
org.hibernate.Session session = HibernateUtil.getSessionFactory().openSession();
try{
setMainList(new MyEntityDAO(session).findMyEntities());
}
finally{
session.close();
}
return getMainList();
}
...
MyEntityDao.java:
...
@SuppressWarnings("unchecked")
public List<MyEntity> findMyEntities(){
Criteria criteria = getSession().createCriteria(MyEntity.class);
criteria.addOrder(Order.desc("participants") );
criteria.setMaxResults(5);
List<MyEntity> MyEntitys = (List<MyEntity>) criteria.list();
List<MyEntity> ordered = new LinkedList<MyEntity>();
ordered.addAll(MyEntitys);
return ordered;
}
...
这里是MyJSFBean.java
,我在其中设置了我的primeFaces dataTable将要交互的列表:
...
public List<MyEntity> getMainList() {
if(mainList == null){
mainList = Util.getMainList();
}
return mainList ;
}
...
当我启动应用程序时(在fillMainList()
类的静态块中),然后每隔12小时(使用调度程序)更新列表,我调用方法Util.java
。
每次用户进入JSF页面时,其支持bean将从Util.java
类中获取此列表。
好的,当我启动应用程序时,我可以看到我的PrimeFaces数据表中的列表与我使用Hibernate Criteria查询的顺序相同。但是大约10分钟后,当我再次进入页面时,列表是随机排序的...静态列表丢失了它的排序......这怎么可能,我甚至使用LinkedList来尝试维护排序而没有成功。 ..
谢谢!