Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate сортировка с учетом локали 
:(
    Опции темы
OutLaw
Дата 9.1.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 23.2.2006

Репутация: нет
Всего: нет



у меня есть таблица с кодировкой UTF-8
в ней есть колонка, делаю выборку с упорядочиванием 
сортировка проходит неверно
пример:
1. Sä
2. Se

но в алфавите 'ä' идет после 'e' т.к. она в конце алфавита

как мне сделать сортировку с учетом локали или есть какой-то другой способ?
PM MAIL   Вверх
Zlatogorov
Дата 9.1.2008, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 18.12.2007
Где: BW,Stuttgart

Репутация: нет
Всего: 1



Тут нужен или свой сортировщик или Codepage менять на сервере.
PM MAIL ICQ   Вверх
OutLaw
Дата 9.1.2008, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 23.2.2006

Репутация: нет
Всего: нет



т.е. я не могу просто сделать так чтобы как-то указать в Criteria или еще где-то нужный Locale?
PM MAIL   Вверх
Zlatogorov
Дата 9.1.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 18.12.2007
Где: BW,Stuttgart

Репутация: нет
Всего: 1



Похоже что нет.
Для наборов (set) можно прописать sort="xxx.yyy.MzHibernateComparator"  и там сортировать.
Оказывается можно при создании сессии это сделать:
Код

public class HibernateSession {
private static Logger logger = Logger.getLogger(HibernateSession.class.getName());
    public static Properties props = null;
    private static SessionFactory sessionFactory = null;
    private static final ThreadLocal threadSession = new ThreadLocal();
    private static final ThreadLocal threadTransaction = new ThreadLocal();
    static {
//#### set locale here
     Locale.setDefault(Locale.ENGLISH);
        Configuration c = new Configuration().configure();
        props = c.getProperties();
        sessionFactory = c.buildSessionFactory();
    }
    public static Properties getProperties() {
        return props;
    }
    public static Session openSession() { 
        Session s = (Session) threadSession.get();
        if (s == null) {
            s = sessionFactory.openSession();
            threadSession.set(s);
        }
        return s;
    }
    public static void closeSession() { 
        Session s = (Session) threadSession.get();
        threadSession.set(null);
        if (s != null && s.isOpen())
            s.close();
    }
    public static void beginTransaction() { 
        Transaction tx = (Transaction) threadTransaction.get();
        if (tx == null) {
            tx = openSession().beginTransaction();
            threadTransaction.set(tx);
        }
    } 
    public static void commitTransaction() { 
        Transaction tx = (Transaction) threadTransaction.get();
        if ( tx != null && !tx.wasCommitted()
             && !tx.wasRolledBack() )
            tx.commit();
        threadTransaction.set(null);
    }
    public static void rollbackTransaction() { 
        Transaction tx = (Transaction) threadTransaction.get();
        try {
            threadTransaction.set(null);
            if ( tx != null && !tx.wasCommitted()
                 && !tx.wasRolledBack() ) { 

tx.rollback();
            }
        } finally {
            closeSession();
        }
    }
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    } 
}

 
В данном случае прописываем Locale.setDefault(Locale.GERMANY);

Это сообщение отредактировал(а) Zlatogorov - 9.1.2008, 13:48
PM MAIL ICQ   Вверх
OutLaw
Дата 9.1.2008, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 23.2.2006

Репутация: нет
Всего: нет



и что ты хочешь сказать, что вот это Locale.setDefault(Locale.ENGLISH);
изменит конфигурацию connection ?
PM MAIL   Вверх
Zlatogorov
Дата 9.1.2008, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 18.12.2007
Где: BW,Stuttgart

Репутация: нет
Всего: 1



Можете и не делать smile
Дело лично ваше.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0650 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.