gpt4 book ai didi

java - TreeMap 中的顺序错误

转载 作者:行者123 更新时间:2023-11-30 09:29:58 25 4
gpt4 key购买 nike

我尝试在 map 中以特定顺序存储“模块”数据。我使用 TreeMap 来实现这一点。当我读取数据时,我得到的顺序完全错误。它以键值 9 开始并以 0 结束。 ??? JPA 做 s.t.否则然后将值“放入”TreeMap 中?

@OneToMany(
mappedBy="prditem",
fetch=FetchType.LAZY,
cascade=CascadeType.ALL,
orphanRemoval=true,
targetEntity=PubModule.class
)
@JoinColumn(name="prditmID")
@MapKey(name="order")
private Map<Integer, PubModule> modules = new PubModulesMap();

public class PubModulesMap extends TreeMap<Integer,PubModule> {

@Override
public PubModule put(Integer key, PubModule value) {
PubModule old = (PubModule)this.get(key);
if (old!=null) {
old.setPrditem(value.getPrditem());
....
}

Iterator <PubModule> it = list.values().iterator();
while (it.hasNext()) {
PubModule pm = it.next();
System.out.println(pm.getOrder());
}

98个76个5个4个3个2个1个0

最佳答案

意外顺序的原因是,JPA 不理解应该对 map 进行排序。

通用解决方案是为您的 map 创建一个 getter 方法:

public Map<Integer, PubModule> getModules() {
if (modules == null) {
modules = new PubModulesMap();
} else if (!(modules instanceof TreeMap)) {
modules = new TreeMap(modules); // Or new PubModulesMap(modules)
}
return modules;
}

如果您使用的是 hibernate ,则应添加 @Sort(type = SortType.NATURAL) 注释。

关于java - TreeMap 中的顺序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13456165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com