обратный инжиниринг hibernate для включения свойства @Transient - PullRequest
0 голосов
/ 19 апреля 2011

Я пытаюсь включить следующие



private org.springframework.web.multipart.commons.CommonsMultipartFile photo;


    @Transient
    public CommonsMultipartFile getPhoto() {
        return photo;
    }

    public void setPhoto(CommonsMultipartFile photo) {
        this.photo = photo;
    }

в мой класс pojo, сгенерированный из таблицы базы данных.

Я изучил, чтобы найти способ упомянуть дополнительный код класса в метатегекак в следующем

http://www.scribd.com/doc/23123635/30/Guiding-the-reverse-engineering-process

, но это не позволяет добавлять свойство переменной photo.

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

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 13 июня 2011

Вы можете добиться такого пользовательского кода с помощью шаблонов мести.Если вы откроете hibernate-tools.jar, вы найдете файлы .ftl в папке pojo.Вам нужно переопределить их, чтобы поставить пользовательский код.

Шаги:

  1. Если вы используете maven, тогда поставьте это значение под componentProperties для цели hbm2java:

    <templatepath>src/main/resources/reveng.templates/</templatepath>
    <filepattern>*.java</filepattern>
    
  2. Создать revenge.templates/pojo папку под ресурсами.Убедитесь, что имя папки всегда pojo, в противном случае переопределения не обнаруживаются.

  3. Создайте файл pojo.ftl и скопируйте содержимое из файла pojo.ftl, присутствующего в банке.,Добавьте все операторы импорта в этот файл.

  4. Аналогично, следуйте другим файлам, чтобы узнать, куда именно вы хотите поместить пользовательский код.

0 голосов
/ 04 июня 2011

Насколько я знаю, нет никакого способа указать это ни в файле Сборка мест или в пользовательском ReverseEngineeringStrategy.

Способ решения этой проблемы заключается в расширении всех сгенерированных базовых классов POJO с помощью пользовательского слоя классов, а также добавлении переходных свойств и специальных режимов поведения. Не совсем то, что вы просили, но он работает хорошо и обеспечивает гибкость, не жертвуя преимуществами генерации кода.

...