Как я могу изменить имя самореферентного набора многие-ко-многим с помощью hibernate.reveng.xml?

У меня есть проект, использующий Hibernate в базе данных Oracle, для которого все сущности создаются непосредственно из Hibernate Tools под управлением файла hibernate.reveng.xml.

У меня есть один класс, который имеет отношение «многие ко многим» с самим собой с помощью промежуточной таблицы, например:

PERSON:
  ID
  ...

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

Без каких-либо конкретных директив Hibernate Tools автоматически сгенерирует класс, который выглядит следующим образом:

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

Поскольку это не очень полезно при кодировании, чтобы определить, какой набор является родительским, а какой - дочерним, я бы хотел переименовать их как «родители» и «дети».

Я редактировал hibernate.reveng.xml, пытаясь заставить его переименовать это поле, но я не могу найти что-то, что работает. Я не уверен, указываю ли я изменение в таблице PERSON, таблице PERSON_PERSON или в обеих, и какие атрибуты нужно изменить.

Я привык настраивать эти классы вручную, но в этом проекте у меня нет контроля над процессом сборки, поэтому мне приходится довольствоваться тем, что создается с помощью Hibernate Tools, поэтому мне просто нужно сделать Hibernate Tools, чтобы делаю что хочу.


person Jon    schedule 14.10.2010    source источник
comment
Я почти уверен, что для их создания он использует метаданные SQL. Следовательно, я не думаю, что вы сможете отклонить автоматизированный процесс от того, что у вас есть.   -  person javamonkey79    schedule 17.10.2011


Ответы (1)


в вашем файле hibernate.reveng.xml попробуйте пометить связанные столбцы следующим образом;

<column name="personsForParentId" property="parents" />
person dursun    schedule 18.10.2011
comment
Проект, для которого был задан этот вопрос, давно прошел, поэтому я не могу подтвердить, но если здесь есть консенсус, я могу установить это как правильный ответ. - person Jon; 20.10.2011