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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как выбрать с помощью JPQL сущности, определенного типа 
:(
    Опции темы
Embedded
Дата 29.5.2011, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте.
У меня такая проблема - есть сущность Auto от нее наследует сущность Truck. 

Код

@Entity
@Table(name="t_auto")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "DISCRIM", discriminatorType = DiscriminatorType.CHAR)
public class Auto {
...
}


Код

@Entity
@Table (name="t_truck")
@DiscriminatorValue("t")
public class Truck extends Auto {
...
}


Подскажите пожалуйста JPQL запрос, так чтобы выбрать только те сущности Auto которые не являются Truck.

offtopic

И сразу прошу прощения, за то, что делаю много не должных вопросов. Получается, что, то что я делаю на практике несколько обгоняет теорию и это первый язык программирования который я осваиваю, + параллельно изучаю html, css, javascript ..которые тоже ранее совсем не изведаны.


Это сообщение отредактировал(а) Embedded - 29.5.2011, 22:34
PM MAIL   Вверх
MisterCleric
Дата 30.5.2011, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Привет.
Думаю, в лоб и по-простому: замепить в Auto DiscriminatorColumn как readOnly (insertable = false, updatable = false) property.
И написать такой JPQL:
Код

from Auto a where a.discriminator != 't'



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


Шустрый
*


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

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



MisterCleric, 
Вот в чем проблема... я когда смотрю что в БД postgresql и что-то не вижу для такого варианта наследования колонку DISCRIM и еще момент, как я понял JPQL оперирует сущностями, а в сущности же нет свойства discrim
PM MAIL   Вверх
MisterCleric
Дата 30.5.2011, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

что-то не вижу для такого варианта наследования колонку DISCRIM

Как это нету? Значит должна быть. Иначе оно у тебя не заработает.
http://www.devx.com/Java/Article/33906/1954
Цитата

а в сущности же нет свойства discrim 

Значит должно быть. Это меппинг на вот ту злосчастную колонку DISCRIM. Только нужно ее исключить из операций изменения данных


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


Шустрый
*


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

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



MisterCleric, 
Цитата

Как это нету? Значит должна быть. Иначе оно у тебя не заработает.

Да я заметил что когда есть всего один класс унаследованные от базового, то он (hibernate) может быть считает что колонка ненужна и не делает ее. Потому что все работает, а колонки разграничителя в БД для Auto я не вижу.
PM MAIL   Вверх
MisterCleric
Дата 30.5.2011, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

а колонки разграничителя в БД для Auto я не вижу

Поэтому сначала надо проектировать БД, а уже потом клиента.
hibernate там тебе много чего начудит...
Мне даже не нравиться, как он Entity по таблицам генерит...


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


Шустрый
*


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

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



MisterCleric, 
Эх братец, мне бы еще SQL изучить как следует и саму БД, а я так... вводный курс прочел. Тут такое дело что без сильного затягивания хочется получить результат а потом уже в более обстоятельна подойти к изучению. Честно сказать я по Java от силы треть 800 страничной книги прочел. 
Спасибо! Попробую далее поэкспериментировать. плюс за мной.
PM MAIL   Вверх
MisterCleric
Дата 30.5.2011, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

Эх братец, мне бы еще SQL изучить как следует и саму БД

Ничего страшного: мы все через это проходили.
Может ты бы не спешил с этими Inheritance?..
Думаю, когда ты в сущность Auto добавишь поле discim, как я описал, то оно однозначно в этой таблице появится


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


Новичок



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

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



В JPA2 появилась функция Type.
Код

SELECT a FROM Auto a WHERE TYPE(a) != Truck

PM MAIL   Вверх
Embedded
Дата 2.6.2011, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



RageSteel, 
Спасибо Братец! Плюс за мной.


MisterCleric, 
Цитата

Ничего страшного: мы все через это проходили.
Может ты бы не спешил с этими Inheritance?..

Да вот такое дело что без наследования не обойтись.. Интересный момент я сделал более сложную ветвь наследования НО в постгрессе поле discim так и не появилось.. но как он их различает.. я не пойму, однако все работает правильно. Короче надо разбираться с постгрессом, с jpa и т.д. Еще раз спасибо!
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.1509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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