私はhibernate(バージョン3.5.3)でクエリを実行しようとしています。このクエリには、異なるテーブル間のいくつかの結合(4つのテーブル)が含まれています。これはクエリです:Hibernate HQLで結合する
SELECT (lot of stuff)
FROM InvestigationRule as ir
JOIN InvestigationFormula as if ON (ir.tb33InvestigationFormula=if.idInvestigationFormula)
JOIN InvestigationEvent as ie ON (ir.tb27InvestigationEvent=ie.idInvestigationEvent)
JOIN InvestigationSectionEvent as ise ON (ie.eventSection=ise.sectionEventsCod)
最初に文法エラーが発生しました。この問題を解決するのに役立つ人がいますか。
PS:私もJOINコマンドを使用せずに、これは元のクエリで参加する私が作ることができることを知っている:
SELECT (lot of stuff)
FROM InvestigationRule AS ir,
InvestigationEvent as ie,
InvestigationSectionEvent as ise,
InvestigationFormula as if
WHERE ir.dateValidityEnd is null
AND ir.tb27InvestigationEvent = ie.idInvestigationEvent
AND ir.tb33InvestigationFormula = if.idInvestigationFormula
AND ie.eventSection = ise.sectionEventsCod
しかし、それはいくつかのCROSS JOINを作成するので、私は上の(s)は、このフォームを使用することはできませんMySQLデータベースとこれは良くありません。エイリアスを変更する必要がありますので
:
HQLのように見えます。また、あなたが持っているものはHQLではありません。 SQL – Jens
簡単に言うと、エンティティを適切にモデル化し、そのような結合を行うべきではありません。とにかく、Hibernateの最新バージョンはこの種の任意結合を提供しますが、必要がない限り、この使用を推奨しません。適切なエンティティモデルを作成する必要があるORMを使用するという考え全体を破棄しているだけです。 –
これらのテーブルをマッピングするHibernateエンティティを見せてください。 – Dherik