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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> order by 
V
    Опции темы
goodday1941
Дата 23.7.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



ситуация следующая (без лишних аннотация и полей):
Код


class A{
    @OneToMany(fetch = FetchType.EAGER, targetEntity = XMLField.class, cascade = {CascadeType.ALL})
    @JoinColumn(name="b_id")
    @Fetch(value = FetchMode.SUBSELECT)
    @OrderBy(value = "c.sortOrder asc")
    
    // или @OrderBy(value = "sortOrder asc")
    private List<B> bs = new ArrayList<B>();
}


class B{
    @ManyToOne    
    @JoinColumn(name = "c_id")
    private C c;
}

class C {
private int sortOrder; 
}



нужно отсортировать коллекцию в классе A по полю sortOrder в классе С..

как это сделать.. ни первый ни второй вариант с OrderBy не прокатывает (

Это сообщение отредактировал(а) goodday1941 - 23.7.2009, 12:55


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
Maksym
Дата 23.7.2009, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



goodday1941
Не уверен что это должно заработать хоть в каком-нибудь виде.
В спецификации JPA, по крайней мере, такое сложное поведение для этой анотации не предусмотрено.
Все что там сказано: 
Цитата
The property or field name must correspond to that of a persistent property or field of the associated class.

Ни о какой обработке вложенности они даже не заикаются.
PM MAIL   Вверх
jeank
Дата 23.7.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



c @OrderBy все должно работать, скорее где то ошибка или баг. На чем все пробуется - Хибернейт, Топлинк, ...? Попробуй сменить фрейворк (временно).

А вот теперь засомневался, что работает - увидел, что сортируемое поле в другом классе, такая ситуевина не встречалась.

Это сообщение отредактировал(а) jeank - 23.7.2009, 15:47
PM MAIL WWW   Вверх
MisterCleric
Дата 23.7.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



Если hibernate, то можно через @Formula достать это поле вложенный запросом в сущности B
Код

@Formula("(SELECT c.sortOrder FROM C_TABLE c where c.id = c_id")
private int sortOrder; 


другого выхода не вижу...


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
goodday1941
Дата 23.7.2009, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



хибернейт хибернейт...

с аннотацией формула пока не сталкивался... сейчас посмотрю в этом направлении


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
goodday1941
Дата 23.7.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



все работает! всем спасибо за ответы!


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
VSergeyV
Дата 14.8.2009, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 9.5.2006
Где: Новосибирск

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



У меня тоже вопрос по Order By, использую Toplink
Есть три сущности, две из них имеют отношение многие ко многим, третья - таблица связки
Код

class T1{
   private int id;
   private Collection<T2> t2s;

   @OneToMany
   @JoinTable(name = "AC", joinColumns = @JoinColumn(name = "T1_ID"), inverseJoinColumns = @JoinColumn(name = "T2_ID"))  
   //@OrderBy(value = "AT.SORT_ORDER")  ???
   public Collection<T2> getT2s() {
        return t2s;
    }
}
class T2{    
    private int id;
}
class AT {
    private int t1_id; 
    private int t2_id; 
    private int sort_order; 
}


@OrderBy(value = "AT.SORT_ORDER")  - как сделать чтобы Collection<T2> t2s была упорядочена по SORT_ORDER из таблицы связки AT?


PM MAIL ICQ   Вверх
VSergeyV
Дата 14.8.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 9.5.2006
Где: Новосибирск

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



Как вообще можно повлиять на тот запрос который будет выполняться для OneToMany? к примеру мне нужно отсортировать по SORT_ORDER и взять первые 5 значений
Неужели никак? Отказался от ManyToMany/JoinTable, мучу через NamedNativeQuery smile 

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

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

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


 




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


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

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