sql >> データベース >  >> RDS >> Mysql

SQLからHQLへのクエリGrails

    HQLではクラス名とフィールド名を使用し、SQLではテーブル名と列名を使用します。したがって、HQLクエリにアンダースコア(少なくとも多くはない)が表示されないようにする必要があります。また、ここで要因になる可能性は低いですが、HQLクエリはfindAllから実行されます そしてそれらはexecuteQueryから実行されます わずかに異なる場合があります。違いは思い出せませんが、executeQuery どのドメインクラスが関係していても、正しいものです。

    ドメインクラスを見ずに知るのは難しいですが、artifact_idのようです artifact.idである必要があります 、およびdocument_id document.idである必要があります 。また、Documentインスタンスがあるため、IDではなくオブジェクトを比較する方が適切です。最後に、active はブール値のプロパティであるため、1や0ではなくブール値が必要です。したがって、これをすべてまとめると、これが必要なものであると推測されます。

    def artifacts = Artifact.executeQuery(
       "FROM Artifact WHERE id NOT IN ( " +
       "SELECT artifact.id FROM Classification " +
       "WHERE active = :active) AND document =:doc",
       [active: true, doc:document],
       [max:limit, offset:startIndex])
    

    ページネーションコントロールのパラメータ値を2つのマップに分離する必要があることに注意してください。



    1. SQLiteブラウザとは何ですか?その使用方法は?

    2. djangodb接続でPostgreSQLVERBOSITYをオンにする方法は?

    3. 複数行のデータを含むMySQLLOADDATA

    4. Wordpressカスタムデータベーステーブルが認識されません