3

1 つの Java スーパークラス (Message) と 3 つの子クラス (Problem、Report、Update) があります。これら 4 つのクラスのそれぞれに対して、Hibernate を使用してデータベースからオブジェクトを取得する個別のコントローラー (リスター) があります。さらに、これらの各コントローラーは、使用しているクラスに固有のフィルター条件 (制限) を追加しています。ListMessages は Message クラスのフィールドの基準を追加でき、ListProblems は Message フィールドと Problem 固有のフィールドの基準を追加できます。しかし、子クラスのフィールドを使用してメッセージをフィルタリングする方法はありますか?

たとえば、メッセージにはフィールド コンテンツがあり、問題にはステータスがあり、レポートには拒否理由があります (すべて文字列)。すべてのメッセージをコンテンツで、問題をコンテンツとステータスで、レポートをコンテンツと拒否理由でフィルタリングできます。しかし、コンテンツ、ステータス、および拒否理由によってメッセージをフィルタリングする方法はありますか? すべてのメッセージのリストを取得したいが、実際にはフィルタリング パターンに一致するステータスの問題 (または拒否理由のレポート) であるすべてのメッセージをフィルタリングできるようにするために、これが必要です。残念ながら、データベースからメッセージを取得して Java コードでフィルタリングすることはできません。データベース側でフィルタリングする必要があります。

4

1 に答える 1

1

使用しているHibernateクエリ言語がわからないため、一般的な質問に答えます。お持ちのクエリ(言語)を投稿すると、例を使って質問を更新できるかどうかを確認します。

左外部結合を使用してサブクラスを含め、各結合に追加の制限を設定して、必要なフィルタリングを含める必要があります。これにより、目的のメッセージが表示されます。

于 2011-11-04T09:18:24.327 に答える