5

У меня есть проект с использованием Hibernate в базе данных Oracle, для которого все сущности генерируются непосредственно из Hibernate Tools под управлением файла hibernate.reveng.xml.Как я могу изменить имя набора для самореферентного набора «многие ко многим», используя 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, чтобы делать то, что я хочу.

+1

Я уверен, что он использует метаданные SQL для их создания. Следовательно, я не думаю, что вы сможете автоматизировать процесс отклонения от того, что у вас есть. – javamonkey79

ответ

1

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

<column name="personsForParentId" property="parents" /> 
+0

Проект этот вопрос был давно, поэтому я не могу подтвердить, но если есть консенсус здесь, я могу установить это как правильный ответ. – Jon