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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JPA, замена Hibernate на TopLink 
V
    Опции темы
Vasay
Дата 15.10.2007, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

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



Пытался сменить провайдера Hibernate на TopLink

Получил: 

Код

java.util.Vector cannot be cast to java.util.ArrayList 


На код:

Код

            ProductCategorys = (ArrayList)query.getResultList();


Интересно, почему тогда Hibernate работает?

Это сообщение отредактировал(а) Vasay - 15.10.2007, 00:59


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
powerOn
Дата 15.10.2007, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(Vasay @  15.10.2007,  01:15 Найти цитируемый пост)
Интересно, почему тогда Hibernate работает?

Посмотри на описания метода getResultList(), уверен, что он возвращает List - а значит и работать нужно через интерфейс List, поскольку что за реализация этого интерфейса будет использована остается на совести разработчиком библиотеки. То что ты смог, используя Hibernate, привести возвращаемое значение к ArrayList - чистая случайность. Просто реализация этого метода Hibernate возвращает именно ArrayList. Как видишь в TopLink используется другая реализация этого интерфейса.


--------------------
user posted image нет времени думать - нужно писать КОД!

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


Шустрый
*


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

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



На сколько я помню из своего опыта работы с Toplink, то можно указать какой класс использовать в качестве имплементации List
Должен быть метод типа:
Код

query.useCollectionClass(ArrayList.class);

А по дефолту вроде стоит Vector.

Добавлено через 10 минут и 38 секунд
JPA Toplink
Вот нашел тут написано как в JPA это заюзать.
смотри Query Hint [toplink.result-collection-type]
PM MAIL   Вверх
Maverick
Дата 16.10.2007, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

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



Старая история... ТопЛинк юзает Вектор... А Хибернэйт АррэйЛист... 
"Написано однажды, работает везде...  " месты, мечты..   smile 


--------------------
smile
PM ICQ GTalk   Вверх
powerOn
Дата 16.10.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(Maverick @  16.10.2007,  12:46 Найти цитируемый пост)
"Написано однажды, работает везде...  " месты, мечты..   smile  

это из другой оперы smile


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Vasay
Дата 16.10.2007, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

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



Подумал, сделал так:

Код

ArrayList  ProductCategorys;
ProductCategorys = new ArrayList(query.getResultList());


Учитывая, что ArrayList имеет такой конструктор: 
Код

public ArrayList(Collection<? extends E> c)


Это правильный подход (по крайней мере работает)?

Цитата

Цитата(Maverick @  16.10.2007,  12:46 Найти цитируемый пост)
"Написано однажды, работает везде...  " месты, мечты..   smile  

это из другой оперы smile 


Да нет, почти из этой. Ведь про JPA говорят - что, применяя его вы не зависити от persistence-провайдера. Поменял одну строчку в persistence.xml и все ОК. А вот не получается.


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
powerOn
Дата 16.10.2007, 15:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(Vasay @  16.10.2007,  16:19 Найти цитируемый пост)
А вот не получается. 

Так это ошибка в твоем коде.  Тебе чисто случайно повезло, что ты смог привести возвращаемое значение к  ArrayList.  В Java Doc явно написано - возвращаемое значение - List (а не ArrayList).  smile Что за реализация этого интерфейса (Vector или ArrayList) - не имеет никакого значения. Интерфейсы, кстати, как раз для этого и созданы - что бы абстрагироваться от реализации.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0463 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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