我使用Hibernate 3.6和JPA2作为Play Framework 1.2的一部分。我有一个实体类,需要一个双对双映射,对键进行排序。以下是我目前得到的:
@Entity
public class MyEntity extends Model
{
@ElementCollection
@MapKeyColumn(name="keycolumn")
@OrderBy("keycolumn")
public Map<Double, Double> myMap;
}
我已经使用YAML将一组测试数据加载到我的DB中,故意不按顺序,以便我可以验证排序是否有效:
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文档和各种论坛,没有真正的运气。非常感谢任何帮助。谢谢!
最快的方法是将其设置为SortedMap并使用@Sort:
@Sort(type = SortType.COMPARATOR, comparator = WhateverComparator.class)
根据注释引用。
以下将在key是原始包装器或您的自定义对象实现可比的情况下工作。我将避免comparator并让Object实现Comparable,这样我就可以简单地使用
@Sort(type = SortType.NATURAL)