休眠逆向工程以包含@Transient属性

时间:2011-04-19 08:18:37

标签: hibernate reverse-engineering transient hbm2java

我正在尝试包含以下内容



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

但这不允许添加属性变量照片。

请建议一种方法如何在reveng.xml中执行此操作 每次运行hbm2java都会包含此代码。

提前致谢!

2 个答案:

答案 0 :(得分: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文件中的内容。在此文件中添加所有import语句。

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

答案 1 :(得分:0)

据我所知,没有办法在reveng.xml或自定义ReverseEngineeringStrategy中指定它。

我解决这个问题的方法是将所有生成的基础POJO类扩展为自定义类层,并在那里添加瞬态属性和特殊行为。不完全是你所要求的,但它运作良好,允许灵活性,而不会牺牲代码生成的好处。