これらのHibernateクエリに関する問題を手伝ってください。Hibernate queringに関する一連の質問
は、以下の構造を考慮してください
@Entity
class Manager {
@OneToMany
List<Project> projects;
}
0)HQLの動的フェッチの2つの可能な方法がある:
- マネージャmから選択M m.projects
- を結合しますマネージャmからm.projectsをフェッチする。
私の設定では、リスト内のオブジェクトの数が正しくないデカルト積の結果を常に返しますが、最初のリストは常にリスト内の正しい数のエンティティを返します。しかし、SQLクエリは同じように見えます。これは、 "select"節がメモリ内のリストから冗長なオブジェクトを削除することを意味しますか?この場合は、を使用して本のアドバイスを参照することは奇妙です...を選択すると、冗長なエンティティを取り除くことができます。これらの2つのクエリが異なる結果を返す理由が間違っているとしたら?
私は私の休止状態SQLログに古典N + 1セレクト問題の出力を参照して上記2つの方法のいずれかによって動的フェッチを利用する場合。実際、FetchModeアノテーション(副選択または結合)は動的にフェッチしている間は電源を持っていません。私は本当にこの特定のケースでn + 1の問題を解決できませんか?
Hibernate Criteria APIはジェネリックをサポートしていません。私は正しい?代わりにJPA Criteria APIを使用する必要があるようですか?
エンティティ名パラメータを使用してHQLクエリを記述することはできますか?たとえば、 "from:myEntityParam p where p.id = 1"とし、その後にsetParameter( "myEntityParam"、MyClass.class)を呼び出します。実際に私が望むのは、ジェネリックなHQLクエリで、複数の非ジェネリックDAOを1つの汎用的なものに置き換えることです。それはあなたが選択したいものを伝えることができ、そしてとにかくJPQLで必須ですので