注釈を使用して Hibernate フィルターをセットアップしようとしています。基本クラスで指定し、すべてのサブクラスでそれを使用させたいのですが、有効にしようとすると、Hibernate がフィルターを見つけられません。フィルター注釈を継承することはまったく可能ですか?
3 に答える
3.5.0 以降、少なくとも @MappedSuperclass では可能です。それが役立つかどうかはわかりません...参照:HHH-4332
休止状態フィルターを直接使用していますか、それとも独自の目的で休止状態フィルターを拡張していますか? アノテーションは Java ではデフォルトで継承されませんが、アノテーションを自分で書いていて、hibernate がそのアノテーションでこれを行わなかったと想定している場合は、アノテーションに @Inherited メタアノテーションを指定して継承させることができます。 . ただし、これは Type レベルの注釈に対してのみ機能します。また、完全な継承をシミュレートするために注釈マネージャーを作成する人もいます。休止状態メカニズムを拡張するか、継承されるべき場所に注釈を追加するプリプロセッサを作成するなど、そのようなことを行うことができます。
ジョン・エリンウッドが書いたことはまさにその通りです。そのため@Filter
、少なくともHibernate Annotations 3.4.0-GAでは、すべてのサブクラスで指定する必要があります。
さらに、それは明らかではないかもしれませんが、それらのコレクションがフィルタリングの影響を受けやすいと予想される場合は、そのクラスのすべてのマップされたコレクションに同じアノテーションが必要になります。