将 hyperjaxb 采购订单导入 Eclipse 教程

2024-03-05

我想从以下位置导入示例应用程序本教程 http://confluence.highsource.org/display/HJ3/Purchase+Order+Tutorial进入日食。我不断收到与文件放置位置相关的错误。当我创建 Main 类来运行教程中的代码时,当 Main 类位于构建路径中时,我要么从 Eclipse 中看到编译错误,而没有看到所需的包,要么得到

启动错误:节不包含主类型

当 Main 类不在构建路径中时。

到目前为止,我已采取以下步骤:

  1. 下载压缩包
  2. 导航到 cmd.exe 中的文件夹
  3. 运行 mvn clean install
  4. 在eclipse中新建maven项目
  5. 将以下内容添加到 pom.xml
  6. 在 eclipse 中运行 Maven 更新项目
  7. 创建 target/ generated-sources/xjc 文件夹
  8. 将hyperjaxb生成的文件导入到 目标/生成源/xjc
  9. 在eclipse项目的其他地方创建Main类来运行测试 代码
  10. 开始从“使用 JAXB 和 JPA”部分添加代码 主类教程

上述步骤会导致我上面描述的错误。让它在 Eclipse 中工作的分步说明是什么?


好吧,这会很长。

首先,让我们确定我们的起点。在这个问题 https://stackoverflow.com/questions/25676731/hyperjaxb3-not-generating-files我们最终发现本教程运行良好,只是在查找生成的 Java 代码时遇到了一些困难。

附带说明一下,本教程是一个 Maven 项目,它使用maven-hyperjaxb3-plugin。在 Maven 中,标准约定是在以下位置生成代码target\generated-sources\myTool。 JAXB 的代码生成工具称为 XJC,因此模式派生代码的标准约定是target\generated-sources\xjc. maven-jaxb2-plugin也这样做。

因此,从现在开始,我假设 PO 教程工作正常:代码已生成,使用 HSQLDB 数据库运行往返测试等。

你现在问的基本上是三件事:

  • 如何切换到MySQL?
  • 如何使用 hbm2ddl 生成数据库模式?
  • 如何将项目导入到Eclipse中?

请注意,这些都不是 Hyperjaxb 特有的。

让我们开始吧。

切换到 MySQL

首先,你必须将HSQLDB替换为MySQLpom.xml。删除这个:

    <dependency>
        <groupId>hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>1.8.0.7</version>
        <scope>test</scope>
    </dependency>

并添加以下内容:

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.0.5</version>
        <scope>test</scope>
    </dependency>

接下来,编辑src/test/resources/persistence.properties。替换这个:

hibernate.dialect=org.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class=org.hsqldb.jdbcDriver
hibernate.connection.username=sa
hibernate.connection.password=
hibernate.connection.url=jdbc:hsqldb:target/test-database/database
hibernate.hbm2ddl.auto=create-drop
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
hibernate.jdbc.batch_size=0

有了这个:

hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.username=...
hibernate.connection.password=...
hibernate.connection.url=jdbc:mysql://localhost/hj3
hibernate.hbm2ddl.auto=create-drop
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
hibernate.jdbc.batch_size=0

我个人目前手头没有MySQL数据库,所以我无法真正测试往返。因此我会注释掉

<!--roundtripTestClassName>RoundtripTest</roundtripTestClassName-->

in pom.xml.

如果您手头有数据库,只需在上述中配置正确的 URL/用户名/密码即可persistence.properties file.

此时,您的 Maven 项目已重新配置为使用 MySQL。如果未注释掉往返测试并且数据库可用,则往返测试应与数据库一起运行,即创建模式、导入示例 XML、读回并比较 alpha 和 omega。

现在我们有了关于 MySQL 的教程,可以继续前进了。

生成数据库模式

这是一个很难弄清楚的部分。

为了在文件中生成数据库模式,您必须使用hbm2ddl工具。有 Maven 插件可以实现这一点,对于 Hibernate 3,Codehaus 插件似乎是领先的插件。最后,我想出了以下配置。您必须将以下插件添加到您的pom.xml (project/build/plugins):

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>hibernate3-maven-plugin</artifactId>
            <version>3.0</version>
            <executions>
                <execution>
                    <id>generate-schema</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <hibernatetool>
                    <classpath>
                        <path location="${project.build.directory}/classes" />
                    </classpath>

                    <jpaconfiguration persistenceunit="org.jvnet.hyperjaxb3.ejb.tests.pocustomized" propertyfile="src/test/resources/persistence.properties"/>

                    <hbm2ddl export="false" create="true" update="false" format="true" outputfilename="schema.ddl" />

                </hibernatetool>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.hibernate.javax.persistence</groupId>
                    <artifactId>hibernate-jpa-2.0-api</artifactId>
                    <version>1.0.0.Final</version>
                </dependency>
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-entitymanager</artifactId>
                    <version>3.6.5.Final</version>
                </dependency>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.0.5</version>
                </dependency>
            </dependencies>
        </plugin>

有几件事很重要:

  • Hyperjaxb3生成JPA注释,所以你必须使用jpaconfiguration.
  • 因此hibernate3-maven-plugin必须在编译阶段执行(您需要类来读取注释,因此必须在此时编译它们)。
  • 您必须包含已编译的类(${project.build.directory}/classes) 到 hibernatetool 的类路径,以便它可以发现类并读取注释。
  • 你必须让 hibernatetool 知道你在哪里找到你的 Hibernate 属性(propertyfile="src/test/resources/persistence.properties").
  • 最后你必须让它知道你想要处理哪个持久单元(persistenceunit="org.jvnet.hyperjaxb3.ejb.tests.pocustomized")。看一眼target/generated-sources/xjc/META-INF/persistence.xml.
  • 最后,添加所有必需的依赖项。

最后你得到了我上面发布的配置。此时构建还应该在中生成数据库模式target/sql/hibernate3/schema.ddl。这是第二个问题。

现在我们已经完成了 Maven 项目,让我们切换到 Eclipse。

将项目导入 Eclipse

我个人不明白的是

8.) 将hyperjaxb生成的文件导入到target/ generated-sources/xjc中

Hyperjaxb3 只是在此目录中生成 Java 文件(在包中)。所以你不需要在任何地方导入任何东西。不要尝试手动复制文件。

正确的方法是使用 Eclipse 中的标准 m2e 插件,然后将 Maven 项目导入 Eclipse 工作区。

文件 > 导入... > 现有 Maven 项目 > 根目录 >(导航到包含pom.xml教程项目)>(检查pom.xml) > 完成

不,您将在 Eclipse 中拥有一个项目。 Eclipse 可能会抱怨不支持的插件目标执行hibernate3-maven-plugin。 (Eclipse不知道,如何将这个插件集成到Eclipse的构建周期中。)选择“不执行(添加到pom)”。这将添加一个“忽略”配置pom.xml并让 Eclipse 高兴。

现在使用 F5 刷新项目。你就完成了。

Eclipse 可能没有一次选择所有内容,因此您可能需要更新 Maven 项目 (Alt+F5)。这就是它现在在我的工作区中的样子:

没有错误,一切都已就位。漂亮又干净。

如果您的数据库设置正确(在persistence.properties),并且您已经生成了往返测试,您可以直接执行它(RoundtripTest > Run As > JUnit Test)。这将启动实体管理器,加载 XML,将其保存到数据库,加载回来并与原始数据进行比较。

现在我们完成了。

我上面描述的 Maven 项目的导入也绝不是 Hyperjaxb3 特定的。


不,请让我解决您的“逐步”列表:

1.) 下载 zip 2.) 导航到 cmd.exe 中的文件夹 3.) 运行 mvn clean install

Ok.

4.)在eclipse中创建新的maven项目

为什么要换一个新的?

5.) 将以下内容添加到 pom.xml

不起作用。你必须找出正确的配置hbm2ddl,就像我一样。这不是 Hyperjaxb3 特定的。

6.) 在 eclipse 中运行 Maven 更新项目

Ok.

7.) 创建 target/ generated-sources/xjc 文件夹

不会。目标下的所有内容都会生成,您永远不会在那里手动创建任何内容。

8.) 将hyperjaxb生成的文件导入到target/ generated-sources/xjc中

我不知道你在这里的意思。您是否尝试手动复制文件?

9.) 在eclipse项目的其他地方创建一个Main类来运行测试代码
10.) 开始将教程的“使用 JAXB 和 JPA”部分中的代码添加到主类中

祝您好运并取得项目成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 hyperjaxb 采购订单导入 Eclipse 教程 的相关文章

随机推荐