Hibernateアノテーションを使用しています。POJOオブジェクトにメソッドを追加するにはどうすればよいですか?たとえば、データベースに関連付けられた「getChildNodes」メソッドがありますが、再帰メソッド「getAllChildNodes」も追加したいと思います。「org.hibernate.PropertyNotFoundException:クラスでプロパティの進行状況のセッターが見つかりませんでした」という例外が発生します。
3 に答える
これを「永続性に関係のないメソッドを追加するにはどうすればよいですか」と解釈する場合は、メソッドの@Transient
アノテーションを使用する必要がありますgetAllChildNodes()
エンティティの構造を定義する方法は2つあります。
- エンティティのインスタンス変数にアノテーションを使用する、または
- エンティティのgetterメソッドでアノテーションを使用する
getterメソッドでアノテーションを使用する場合、HibernateはすべてのgetXxx(およびブール型の場合はisXxx)が永続プロパティの定義を表すと想定します。そして、これは、あなたの場合のように、その特定のゲッターに注釈が含まれていない場合でも当てはまります。
Hibernateは、永続プロパティごとに一致するセッターメソッドを見つけることも期待しています。そしてあなたの場合、それが欠けているものであり、例外を引き起こします。
この問題は、カスタムゲッターを宣言することで解決できます@Transient
。これは、このゲッターが永続的なプロパティを表していないことを示しています。別の方法は、インスタンス変数の注釈を使用するようにエンティティを変換することです。後者は私の個人的な選択です。
.javaファイルを開き、。という名前のメソッドを記述しますgetAllChildNodes()
。
Hibernateはコードを記述せず、データベース内のフィールドをコードにマップします。それで全部です。プロパティの通常のゲッターとセッターに加えて、ドメイン/モデルクラスに追加のロジックが必要な場合は、それらを自分で追加する必要があります。