我正在使用Hibernate 3.6和JPA2作为Play Framework 1.2的一部分。我有一个实体类,需要一个Double-to-Double地图,按键排序。这是我到目前为止所得到的:
@Entity
public class MyEntity extends Model
{
@ElementCollection
@MapKeyColumn(name="keycolumn")
@OrderBy("keycolumn")
public Map<Double, Double> myMap;
}
我已经使用YAML将一组测试数据加载到我的数据库中,故意不按顺序排列,以便我可以验证排序是否正常工作:
myMap: {100.0: -10.0, 200.0: -5.0, 125.0: -8.0, 300.0: -2.0, 50.0: -12.0}
不幸的是,到目前为止还没有:
Key: 100.000000, value: -10.000000
Key: 200.000000, value: -5.000000
Key: 125.000000, value: -8.000000
Key: 300.000000, value: -2.000000
Key: 50.000000, value: -12.000000
如果排序有效,我希望看到:
Key: 50.000000, value: -12.000000
Key: 100.000000, value: -10.000000
Key: 125.000000, value: -8.000000
Key: 200.000000, value: -5.000000
Key: 300.000000, value: -2.000000
数据库不是我的强项,我也是JPA的新手。一直在挖掘Hibernate文档和各种论坛,没有真正的运气。非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
最快的方法是使其成为SortedMap并使用@Sort:
@Sort(type = SortType.COMPARATOR, comparator = WhateverComparator.class)
答案 1 :(得分:0)
以下将适用于key是原始包装器或实现可比较的自定义对象的情况。 我会避免使用比较器并让Object实现Comparable,这样我就可以简单地使用
@Sort(type = SortType.NATURAL)