У меня есть две таблицы:
и я запускаю запрос в MySQL, который отлично работает:
SELECT sum(toplam)
FROM
(SELECT ut.uye, t.fiyatTuru AS FT, ut.nominalDeger * t.birimFiyati AS toplam
FROM UyeTeminat AS ut JOIN Teminat AS t ON ut.teminat = t.teminatId
WHERE ut.uye= :uyeId and t.fiyatTuru = :fiyatTuru
) AS t1
GROUP BY t1.FT
Результат запроса выше:
sum(TOPLAM)
2010.000000
5550780.000000
Однако, когда я конвертирую его в HQL:
BigDecimal toplamTLTeminatiInteger;
toplamTLTeminatiInteger = (BigDecimal) session.createSQLQuery("SELECT sum(toplam) FROM (SELECT ut.uye, t.fiyatTuru AS FT, ut.nominalDeger * t.birimFiyati AS toplam FROM UyeTeminat AS ut JOIN Teminat AS t ON ut.teminat = t.teminatId WHERE ut.uye= :uyeId and t.fiyatTuru = :fiyatTuru) AS t1 GROUP BY t1.FT")
.setParameter("uyeId", uyeTeminat.getUye() )
.setParameter("fiyatTuru", uyeTeminat.getTeminat().getFiyatTuru()).uniqueResult();
Я получил эту ошибку:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'database.uyeteminat' doesn't exist
В названии таблицы нет ничего плохого, я использую UyeTeminat в других запросах.
Разве то, что я делаю в MySql, не разрешено в HQL?