1

プログラムでjpaクエリを検証する正しい方法は何ですか。Hibernate は、エンティティに対するすべてのアノテーション ベースの名前付きクエリを検証します。しかし、エラーをチェックするために、プログラムで構築されたjpaクエリでこの検証ルーチンを呼び出すにはどうすればよいでしょうか?

@実在物
公開クラス Foo {
@ID
パブリック int id;

パブリック文字列名;

}
主要(...) {
    クエリ q = getEntityManager().createQuery("select e from " + Foo.class.getName() + " e where e.name = 'x' ");
    // ここで q を検証
}
4

2 に答える 2

3

しないでください。本番環境と同じスキーマを持つ実際のデータベースを使用して、コードの完全な統合テストを行います。

考えてみてください。不正な形式のクエリを作成した場合、それはプログラミングのバグです。その情報をどうするつもりですか?JPA クエリの形式が正しくないことをユーザーに伝えますか? 現実的にできることは、エラーをログに記録し、ユーザーに「何か悪いことが起こった」と伝えることだけです。とにかく後でログをチェックすると、それが不正な形式のクエリであることがわかります...

編集

createQuery()悪いデータをフィードして呼び出しを調査することも価値があるかもしれません-ここのjavadocは、それがスローされる可能性があることを示唆しておりHibernateException、検証以外の文字列で何ができるかわかりません...

于 2009-06-24T11:14:01.843 に答える