【问题标题】:Hibernate reverse engineering primary keys (EmbeddedId to IdClass)Hibernate 逆向工程主键(EmbeddedId 到 IdClass)
【发布时间】:2011-07-18 06:34:13
【问题描述】:

我正在使用 hbm2java (hibernate3-maven-plugin) 来生成实体。

如何将自动生成的@EmbeddedId 切换为@IdClass?

谢谢

【问题讨论】:

    标签: hibernate jpa reverse-engineering hibernate-tools hbm2java


    【解决方案1】:

    hibernate maven 插件不会自动执行此操作,如果您想使用@IdClass,则需要手动更新您的类。

    【讨论】:

    • witout maven 怎么样?有可能吗?
    • 我不知道 :(。我不使用逆向工程工具,因为否则我无法将实体更改为域模型(例如我无法添加方法)。我建议您第一次创建文件,然后自定义它们以执行您想要的操作。
    • 你是对的。我刚刚检查了休眠工具的源代码。模板文件中不存在此功能。我现在非常失望。
    • 啊!如果您使用@IdClass 在复合 ID 中放置和映射为字符串,请小心,存在一个狡猾的零星错误,其中休眠转换使用序号而不是字符串:(。如果您使用 @ 映射它,则不会发生这种情况EmbeddedId
    【解决方案2】:

    我没有尝试关注。但是从我一直在使用 Hibernate 逆向工程工具的情况来看,我认为使用 reveng.xml 文件应该是可能的。 在你的 pom 文件中。

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>hibernate3-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
        <components>
            <component>
                <name>hbm2java</name>
            </component>
        </components>
        <componentProperties>
           <revengfile>/src/main/resources/reveng/model.reveng.xml</revengfile>
        </componentProperties>
        </configuration>
        <executions>
      <execution>
      <phase>compile</phase>
      <goals>
        <goal>hbm2java</goal>
      </goals>
      </execution>
    </executions>
    

    并在 reveng.xml 中指定映射到 IdClass 的类型(请参阅 Hibernate 工具文档 http://docs.jboss.org/tools/3.1.0.GA/en/hibernatetools/html_single/index.html#type_maphttp://docs.jboss.org/tools/3.1.0.GA/en/hibernatetools/html_single/index.html#d0e5869)。

    如前所述,我没有尝试过。

    由于其他各种原因,我放弃了使用逆向工程。一个问题是hibernate 工具不兼容Hibernate 3.5 及更高版本。此外,Maven 插件是第三方的,它使用的 Hibernate 工具的版本比一般可用的工具要旧。所以我也遇到了不得不从Maven调用ant来做逆向工程的情况。

    【讨论】:

    • 是的,你是对的。可以使用 reveng 文件。但是我无法理解 type_map 部分。据我了解,它可用于将 jdbc_type 映射到 java 类型。我的第二个问题是关于蚂蚁配置的。如果你不介意,你也分享一下吗?
    • 休眠文档链接不再可用。有人更新链接了吗?
    猜你喜欢
    • 2012-05-06
    • 1970-01-01
    • 2015-09-27
    • 2015-03-08
    • 2012-03-15
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    相关资源
    最近更新 更多