我使用Hibernate 3.6和JPA2作爲Play Framework 1.2的一部分。我有一個實體類,它需要一個Double-to-Double映射,並按鍵排序。下面是我到目前爲止有:使用JPA2和Hibernate對Java基元進行排序映射?
@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文檔和各種論壇,沒有真正的運氣。任何援助非常感謝。謝謝!
嘗試創建使用Double.compare實現的compareTo一個DoubleComparator類()(),但它不起作用。最終決定採用Hibernate給我的地圖,並將所有值放入一個TreeMap給我一個有序地圖。謝謝,不過。 –
markerikson
哦,我的壞。對於雙打,你可以使用SortType.NATURAL。無需編寫比較器。然後Hibernate將基本上做你手動做的事情。 –
無法在我的情況下工作。我使用Hibernate作爲Play Framework的一部分,並從YML文件中加載示例數據。 Play的YML加載代碼似乎想要將我的數據加載爲LinkedHashMap,當Hibernate嘗試將其視爲SortedMap時,會導致ClassCastException。哦,好吧 - 只要能夠在運行時對它進行排序就足夠了。不管怎麼說,還是要謝謝你。 – markerikson