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

Hibernate:ネイティブの一括操作クエリを実行できませんでした

    データベース(プリペアドステートメント)にパラメータ化されたクエリがある場合、パラメータに値を割り当てても、クエリの構造と実行パスを変更してはなりません(そうでない場合、データベースはパラメータ化されたクエリとして扱わず、例外をスローします)。

    そのため、次のようなクエリのステートメントを準備することはできません。

    • select * from myTable order by ?
    • select id, f1, ? from myTable
    • select * from ?

    各パラメータに値を割り当てると、クエリの実行パスが変更されるためです(プリペアドステートメントのクエリは1回解析され、単一の実行パスになることに注意してください)。

    同じルールがHibernateクエリパーサーに適用されます。クエリ構造を変更する値をパラメーターに割り当てないでください。

    値が1, 2, 3の文字列を割り当てる SHOULD-TO-BE-A-NUMBERパラメータへの変換はまったく同じです。実際、最初のクエリはupdate weight_note_receipt set pledge_id =:pledge where wn_id = :wnsとまったく同じように変換されます。 ただし、2番目のものはupdate weight_note_receipt set pledge_id =:pledge where (wn_id = :x1 or wn_id = :x2 or wn_id = :x3)として変換されます。 、明らかに異なる実行パスを持つ異なるクエリ。

    したがって、Hibernateが例外をスローしなかったとしても、データベースは例外をスローします。



    1. Dockerコンテナの実行には、少なくとも1つの引数が必要です

    2. パフォーマンスを最適化するために、SQLテーブル内のクエリ可能なフィールドのすべての組み合わせにインデックスを付ける必要がありますか?

    3. MDFファイルとは何ですか?

    4. to_sqlpyodbcカウントフィールドが正しくないか構文エラー