Инструменты Hibernate: как генерировать базовые классы? - PullRequest
0 голосов
/ 01 декабря 2010

Я недавно установил Eclipse Helios и Hibernate Tools 3.4.0.Beta1.

Я пытался создать "базовый класс" из файлов сопоставления, но не могу понять, как это сделать. Допустим, у меня есть файл сопоставления Individual.hbm.xml. Я хочу, чтобы Hibernate Tools генерировал 2 POJO: - BaseIndividual.java, который будет содержать конструкторы и геттеры / сеттеры - Individual.java, где я мог бы добавить «пользовательский» код, который не будет удален всякий раз, когда я заново генерирую POJOs

Я потратил много времени на поиск информации, но так и не нашел практического ответа. Если кто-то может помочь ... заранее спасибо

Ответы [ 2 ]

1 голос
/ 27 мая 2012

Я только что натолкнулся на ваш вопрос, пытаясь сделать то же самое сам (я думаю).

В моем файле конфигурации hbm.xml установлено следующее:

<class
    name="User"
    table="USERS">
    <meta attribute="generated-class">ocs.authentication.UserBase</meta>
    <id
        name="user_id"
        column="USER_ID"
        type="integer">
        <generator class="increment"/>
    </id>
    <property
        name="username"
        column="USERNAME"
        type="string" />
</class>

Обратите внимание на раздел <meta attribute="generated-class">. Это приведет к тому, что сгенерированный класс будет называться UserBase (в данном случае). Затем вы можете создать другой класс (например, с именем пользователя), который расширит этот базовый класс:

public class User extends UserBase {

    public User() {
    }

    public void SomeFunction() {
    ...
    }

}

Кажется, это работает для меня. Я надеюсь, что это полезно для вас, или для других, желающих сделать подобное.

0 голосов
/ 02 сентября 2011

Я тоже ищу способ сделать это. Что я сейчас делаю, так это:

  • чтобы сохранить мой пользовательский класс "Individual.java" в другой пакет без обновления ссылки.
  • сгенерируйте все мои pojo (с именем таблицы, т.е. индивидуально)
  • переименовать их в tablename + "Base" (т.е. IndividualBase) без обновления ссылок)
  • затем перемещая мой пользовательский класс (Individual), который расширяет pojo из другого пакета.

Вы нашли автоматический способ сделать это, например:

  • Использование собственного шаблона
  • Написание собственной муравьиной задачи
  • Настроить hibernate.reveng.xml

Я согласен, что Hibernate Synchronizer делал это очень хорошо!

...