【问题标题】:hibernate reverse engineering to include a @Transient property休眠逆向工程以包含 @Transient 属性
【发布时间】:2011-08-08 11:34:59
【问题描述】:

我正在尝试包括以下内容

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 时都会包含此代码。

提前致谢!

【问题讨论】:

    标签: hibernate reverse-engineering transient hbm2java


    【解决方案1】:

    您可以使用 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. 同样,按照其他文件找出您想要放置自定义代码的确切位置。

    【讨论】:

    • @DarthJDG 谢谢,它现在似乎可以正常工作了具有瞬态方法和属性。谢谢!
    • @nightfly 实际上是 rdk 的回答,我只是在他的帖子中修复了一些格式。
    【解决方案2】:

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

    我解决此问题的方法是使用自定义类层扩展我生成的所有基本 POJO 类,并在其中添加瞬态属性和特殊行为。不完全符合您的要求,但它运行良好,并且在不牺牲代码生成优势的情况下提供了灵活性。

    【讨论】:

      猜你喜欢
      • 2016-11-23
      • 2023-04-03
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 2012-10-27
      • 2023-04-09
      • 1970-01-01
      相关资源
      最近更新 更多