5

OracleデータベースでHibernateを使用するプロジェクトがあり、すべてのエンティティがhibernate.reveng.xmlファイルの制御下でHibernateToolsから直接生成されます。

次のように、中間テーブルを使用して、それ自体と多対多の関係を持つ1つのクラスがあります。

PERSON:
  ID
  ...

PERSON_PERSON:
  PARENT_ID --> PERSON.ID
  CHILD_ID  --> PERSON.ID

特定のディレクティブがない場合、HibernateToolsは次のようなクラスを自動的に生成します。

public class Person {
    private Long id;
    private Set<Person> personsForParentId = new HashSet<Person>(0);
    private Set<Person> personsForChildId = new HashSet<Person>(0);
}

どちらが親セットでどちらが子セットであるかをコーディングする場合、これはあまり役に立ちません。そのため、名前を「parents」と「children」に変更したいと思います。

hibernate.reveng.xmlを編集して、そのフィールドの名前を強制的に変更しようとしましたが、機能するものを見つけることができません。PERSONテーブル、PERSON_PERSONテーブル、またはその両方に変更を指定しているかどうか、およびどの属性を変更するかがわかりません。

私はこれらのクラスを手動で設定することに慣れていますが、このプロジェクトではビルドプロセスを制御できないため、Hibernate Toolsによって生成されるものを処理する必要があるため、HibernateToolsを次のように作成する必要があります。私がやりたいことをしなさい。

4

1 に答える 1

1

hibernate.reveng.xml ファイルで、関連する列を次のようにマークしてみてください。

<column name="personsForParentId" property="parents" />
于 2011-10-18T08:25:51.760 に答える