2017-10-20 4 views
-3

'java.sql.SQLSyntaxErrorException:' on clause 'の' * '列に不明な点があります。 "休止状態で。"java.sql.SQLSyntaxErrorException:休止状態のテーブルと結合するときに 'on clause'内の '*'列が不明です

jpqlは自己結合をサポートしていないので、私は他のかなり醜い、しかし、 "左への結合"の多いソリューションを使用しようとしています。 非常に多くの場合、この例外が発生しますが、列は存在します。行のランダムな置換(行ごとに1つの結合)が役立ちます。または、他の結合での1つの結合の条件の設定も役立ちます。しかし、私はなぜそれが理解できません!

なぜ私はジョインの順序を変更するか、または "on"条件を別のジョインまたは "where句"に設定するだけで、すべての同じクエリーhibernateでいくつかの列を参照または表示できますか? ありがとうございます。

答えて

0

だから、ここに事がある。私は複雑なDBを持っていました。複雑なクエリを構築することは、ほとんどの場合、「on clause」の「Unknown column '*」で終了しました。

その理由は、データベース自体とMySQLクエリオプティマイザの構造にあります。

MySQLと私はすべてのDBがクエリを最適化しようとしていると推測し、各テーブルのエントリの数に基づいてできるだけ頻繁に動作するようにジョインの順序を決めています。

テーブルの1つには、他のテーブルとの関連性しかありませんでした。 1つの表と1対1の関係になっていたので、オプティマイザは他のすべてのジョブを実行した後、ほとんどの場合、常に最後に結合していました。しかし、それはできませんでした。なぜなら、そのテーブルからのデータを使用しなければならず、それが最後に接続されるからです。だから私はDBをリファクタリングして、2つのテーブルを作る必要がありました。なぜなら、2つのテーブルは本当に意味をなさないからです。

私はそれが役に立ちそうです。スムーズさが不明な場合はお気軽にお問い合わせください。

関連する問題