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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate left join sql => hql 
:(
    Опции темы
gelo86
Дата 22.6.2008, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот ест у меня такой код:

Код

@Entity
@Table(name = "hibernate_corporation")
public class HibernateCorporation {
    private static final long serialVersionUID = -581320191187294904L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    protected Integer id;
    
    @Column(name = "name")
    private String name;

    @ManyToOne
    @JoinColumn(name = "director")
    private HibernateCorporation director;

    @OneToMany(mappedBy = "director", cascade = CascadeType.ALL)
    private Set<HibernateCorporation> subordinate;

    public HibernateCorporation() {
        super();
    }

    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }
    
    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public HibernateCorporation getDirector() {
        return this.director;
    }

    public void setDirector(HibernateCorporation director) {
        this.director = director;
    }

    public Set<HibernateCorporation> getSubordinate() {
        return this.subordinate;
    }

    public void setSubordinate(Set<HibernateCorporation> subordinate) {
        this.subordinate = subordinate;
    }

    @Override
    public boolean equals(Object another) {
        if (another == null) {
            return false;
        }
        if (another instanceof DomainModel) {
            if (((DomainModel) another).getId() == null) {
                return false;
            }
            return ((DomainModel) another).getId().equals(this.getId());
        } else {
            return false;
        }
    }

}


Hiberante пашет, все нормално. Но вот нада непер записат такой sql на hql:

Код

SELECT c1.name FROM hibernate_corporation AS c1 LEFT JOIN hibernate_corporation as c2 ON c1.id = c2.director WHERE c2.id IS NULL;
Код





Исползую MySQL. В консоли такой sql работает. Но как такой превратит в hql?


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


Эксперт
***


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

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



Здравствуй
а так не пробовал?
Код

session.createCriteria(HibernateCorporation.class)
            .createAlias("subordinate", "c2")
            .add(Restrictions.isNull("c2.id")).list();



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


Новичок



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

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



В HQL нет, согласно ответам создателей, left-join
Пруфлинки гуглятся в форуме поддержки в течении минуты. 
выкручивайся where entity.field is null

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


Шустрый
*


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

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



Код

SELECT c1.name FROM  HibernateCorporation c1 WHERE c1.director.id IS NULL


Хотя нулловый айдишник - вещь мифическая...
--------------------
Всему свое время (с) ЧайфНе парься, будь счастлив (с) Пеппи Длинный Чулок
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0651 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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