问题场景描述:
想实现在查询主表的时候把和主表有关的从表信息也显示出来,并且显示的从表的信息能够默认排序,主表和从表是一对多的关系,对和主表关联的两个子表进行了排序,排序方法用的是Collections.sort,报错:java.io.NotSerializableException:com.primeton.das.entity.impl.hibernate.collection.AbstractPersistentCollection$ListIteratorProxy
适用环境:
EOS63
解决经验:
导致问题的原因如下:
com.primeton.ext.data.sdo.collection.ContainerAwareList类中含有一个属性ListIterator,这个属性没有实现序列化接口,默认情况下,这个属性为null;
Collections.sort方法中会调用listIterator方法,这样属性ListIterator就有值了,所以序列化时报错。
//Collections.sort方法
public static > void sort(List list) {
Object[] a = list.toArray();
Arrays.sort(a);
ListIterator i = list.listIterator();
for (int j=0; j
i.next();
i.set((T)a[j]);
}
}
推荐的解决方法:建议不要调用Collections.sort方法,而是调用Arrays.sort,然后自己把list值设定,避免调用listIterator方法。
注意事项:
无