質問

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

@Entity
public class Foo {
@Id
public int id;

public String name;

}
main(...) {
    Query q = getEntityManager().createQuery("select e from " + Foo.class.getName() + " e where e.name = 'x' ");
    // validate q here
}
役に立ちましたか?

解決

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

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

編集

不正なデータ-javadoc here は、 HibernateException をスローできることを示唆していますが、よくわかりません検証以外の文字列でできること...

他のヒント

createQueryを使用するか、JPQLの作成中にクラス名を入力する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top