Сортировать карту примитивов Java с использованием JPA2 и Hibernate? - PullRequest
0 голосов
/ 29 июля 2011

Я использую 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 и на разных форумах, без особой удачи.Любая помощь очень ценится.Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 августа 2011

Следующее будет работать в любом случае, когда ключ - это примитивные оболочки или ваш пользовательский объект, реализующий сравнимый. я бы избегал компаратора и имел бы Object реализующий Comparable, так что я могу просто использовать

@ Sort (type = SortType.NATURAL)

0 голосов
/ 30 июля 2011

Самый быстрый способ - создать SortedMap и использовать @Sort:

@Sort(type = SortType.COMPARATOR, comparator = WhateverComparator.class)

для справки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...