1

次の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)"
    );

私が抱えている問題は、doや。と同様に、NormaleZoneから継承することです。ZoneHandicapZoneLoveZone

私がやりたいことは次のとおりです。

    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そのメソッドで着信オブジェクトを確認し、ゾーン用とシート用の2つの文字列を作成して、それらをHQL文字列に連結する以外に、これを解決する方法がわかりません。

4

1 に答える 1

4

オブジェクトのクラスを示す隠しプロパティがあります。ze.class = :seatclassand ("seatclass", Seat.class)を使用

于 2012-11-05T09:11:53.210 に答える