2012-11-02 45 views
1

我有以下HQL语句:HQL和继承

Query q = session.createQuery(
     "SELECT ze " + 
     "FROM NormaleZone zo " + 
     "LEFT JOIN zo.zaal za " + 
     "LEFT JOIN za.vertoningen v " + 
     "LEFT JOIN zo.normaleZetels ze " + 
     "WHERE v = :vertoning " + 
     " AND zo = :zone " + 
     " AND ze NOT IN (SELECT t.zetel FROM Ticket t WHERE t.vertoning = :vertoning)" 
    ); 

我的问题是,从ZoneNormaleZone继承,因为这样做HandicapZoneLoveZone

我想这样做的是以下几点:

Query q = session.createQuery(
     "SELECT ze " + 
     "FROM Zone zo " + 
     "LEFT JOIN zo.zaal za " + 
     "LEFT JOIN za.vertoningen v " + 
     "LEFT JOIN zo.??? ze " + 
     "WHERE v = :vertoning " + 
     " AND zo = :zone " + 
     " AND ze NOT IN (SELECT t.zetel FROM Ticket t WHERE t.vertoning = :vertoning)" 
    ); 

你可以看到我把zo.???在那里。这个HQL的目标是找出哪些座位尚未在电影院拍摄。问题在于抽象类Zone没有座位(ze将成为座位的别名)。

我不明白我怎么能解决这个问题,除了看着那个方法传入Zone对象,然后做两个字符串,一个区域,一个用于席位,然后在HQL字符串拼接它们。

回答

4

有一个隐藏的属性,它表示一个对象的类。使用ze.class = :seatclass和(“seatclass”,Seat.class)