2011-04-19 60 views
0

我想包括以下Hibernate逆向工程包括一个@Transient财产

 


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


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

    public void setPhoto(CommonsMultipartFile photo) { 
     this.photo = photo; 
    } 
 
从数据库表中生成我的POJO类

我已经研究发现有提到在meta标签额外的类代码 像下面

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

的方式,但这并不允许添加属性变量照片。

请提出一个方法,我怎么在reveng.xml中这样做,以便 这个代码包含在每次运行的hbm2java中。

在此先感谢!

回答

2

您可以使用reveng模板来实现这样的自定义代码。如果您打开hibernate-tools.jar,则会在pojo文件夹中找到.ftl文件。你需要重写它们来放置自定义代码。

步骤:

  1. 如果您正在使用maven然后把这个componentProperties下在hbm2java目标:

    <templatepath>src/main/resources/reveng.templates/</templatepath> 
    <filepattern>*.java</filepattern> 
    
  2. 创建资源下revenge.templates/pojo文件夹。确保文件夹名称始终为pojo,否则不会检测到覆盖。

  3. 创建pojo.ftl文件并复制jar中存在的pojo.ftl文件中的内容。在此文件中添加所有导入语句。

  4. 同样,请按照其他文件找出您想要放置自定义代码的位置。

+0

@DarthJDG谢谢,它似乎现在正在工作我所做的是我只是在元类代码中包含属性变量,即使eclipse解析器显示xml错误...生成的实体具有瞬态方法和属性都有。谢谢! – nightfly 2011-07-21 06:04:28

+0

@nightfly实际上这是rdk的回答,我只是在他的帖子中修正了一些格式。 – DarthJDG 2011-07-21 06:24:08

+0

rdk的解决方案解决了这个问题。谢谢 – 2011-10-18 11:49:12

0

据我所知,无法在reveng.xml或自定义的ReverseEngineeringStrategy中指定此方法。

我解决这个问题的方法是将所有生成的基类POJO类扩展为一个自定义类图层,并在其中添加瞬态属性和特殊行为。不完全是你所要求的,但它运行良好,并且在不牺牲代码生成益处的情况下实现灵活性。