使用JPA2和Hibernate的Java原语排序映射



我使用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)

最新更新