使用TreeSet导致序列化异常
- 问题描述:对一级分类下面的二级分类按照order字段(Integer类型)进行排序,当时弄了个TreeSet,传了个自定义Comparator,在本地跑没问题,排序也排好了,在测试环境也通过了,结果这玩意一到线上,就报序列化异常,线上环境加了缓存。查资料说TreeSet这里有个bug不能进行序列化,顿时就郁闷了。
- 异常信息如下
- 场景描述
现模拟一下需求对应的JavaBean如下:
public class ProductCategory implements Serializable {
private String id;
private String name;
private Integer order;
private Set<ProductCategory> children = new HashSet<>();
}
省略getter,setter方法,线上环境用的hibernate,以前的JavaBean,用很久了,不敢改动。子分类对应一个HashSet(), 而这个HashSet是无序的,现需要对这个children子分类排序,模拟