Java静态列表在一段时间后失去了它的顺序

时间:2014-06-15 23:29:05

标签: java sorting jsf collections linked-list

我的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来尝试维护排序而没有成功。 ..

谢谢!

0 个答案:

没有答案