排序Java静态列表在一段时间后失去了顺序
我的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。爪哇:
...
@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数据表将交互的列表:
...
public List<MyEntity> getMainList() {
if(mainList == null){
mainList = Util.getMainList();
}
return mainList ;
}
...
我在启动应用程序时(在Util.java
类的静态块中)调用方法fillMainList()
,然后每隔12小时(使用调度程序)更新列表
每次用户进入JSF页面时,其支持bean都会从Util.java
类中获得这个列表
好的,当我启动我的应用程序时,我可以看到PrimeFaces数据表中的列表,其顺序与我使用Hibernate条件查询的顺序相同。但大约10分钟后,当我再次进入页面时,列表被随机排序。。。静态列表失去了它的排序。。。这是怎么可能的,我甚至用LinkedList试图维护排序,但没有成功
谢谢
共 (0) 个答案