您好我正在尝试使用Dozer将我的Hibernate域对象映射到DTO。源映射是包含Set的Object。使用API转换,映射工作正常,但不保留我的结果集中的顺序。有没有办法保留结果集中的顺序?谢谢,
答案 0 :(得分:0)
默认情况下,设置不支持排序。您是否尝试使用LinkedHashSet作为实现?
我最近使用TreeSet做了类似的事情。我将无序集转换为有序集。秘诀是在映射之前在DTO中创建一个空的TreeSet。
TreeSet<MyClass> mySet = new TreeSet<MyClass>(new MyComparator());
myDTO.setMyClasses(mySet);
mapper.map(otherBean, myDTO);
在Dozer映射之后,目标(myDTO)中的顺序将与比较器的顺序相匹配。
我怀疑如果您同样在目标DTO中将Set的实现预先设置为LinkedHashSet,那么将保留原始集合的顺序。如果没有,请尝试将源bean的实现设置为LinkedHashSet。