2010-12-01 3 views
0

Я недавно установил Eclipse Helios и Hibernate Tools 3.4.0.Beta1.Hibernate Tools: как создавать базовые классы?

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

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

ответ

0

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

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

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

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

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

1

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

То, что я сделал установлен следующий в моем файле конфигурации 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 (в данном случае). Вы можете создать еще один класс (так называемый User, например), что продлит этот базовый класс:

public class User extends UserBase { 

    public User() { 
    } 

    public void SomeFunction() { 
    ... 
    } 

} 

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