问题标签 [hyperjaxb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1265 浏览

java - hyperjaxb3 not generating files

I am trying to learn hyperjaxb by studying this tutorial. I followed all of the instructions down to the heading section What was Generated?. This included the following steps:

But nothing was generated. There is no /generated-sources/xjc directory, and there is no PurchaseOrderType.java. I did a key word search of the entire directory structure to confirm that these resources were not present after running mvn clean install. I also imported the directory structure into a new eclipse maven project and tried run as...maven clean and run as...maven build within the new eclipse maven project, but got the same lack of results.

What can I do to get this tutorial to produce the intended generated files?

Also, is there a better way to generate JPA entities from xsd??


EDIT:

As per @kapep's advice, I tried mvn generate-sources and got the following results:

I then tried mvn clean install again, and got the following results:

You can see the warning in the print screens that org.apache.maven.plugins:maven-compiler-plugin is missing. I found the corresponding folder in the .m2 repository on my machine and deleted it, then did a maven update project from within eclipse to re-download the library. I then did another mvn clean install, and got the same lack of results. Nothing was generated, no java file, no generated-sources directory. Nothing.

What else can I try?


SECOND EDIT:

The tutorial app still DOES NOT generate the intended files, however, I was able to get rid of the warning message in the print screens by changing the maven-compiler-plugin portion of the pom to the following:

Note that, in addition to specifying the version, I also changed the source and target from 1.5 to 1.6, as per @Todd 's advice in this posting. I assume these refer to JDK versions. My installation uses JDK 1.6. I do not know if this is causing any problems.

What else can I try?

0 投票
1 回答
226 浏览

java - JAXB 总是编组扩展 - 无法仅获取超类型的元素

我遇到了JAXB / Spring Web Services的问题。下面是详细说明。我很感激任何可以帮助我解决它的建议。如果需要,我可以提供更多详细信息。

我正在编写一个返回某些实体列表的 Web 服务。Spring WS 是契约优先的框架,所以我从 XSD 开始,类似于:

它运作良好。但是,“实体”类型开始增长(有很多元素),这导致了性能问题(响应中有很多实体)。所以我决定把“实体”分成两部分

  1. 将在组响应中返回的一些一般信息 -实体
  2. 将在另一个 Web 服务操作中返回的更详细信息,特定于实体 - EntityDetails

因此,更改后的架构如下(EntityDetails 继承自 Entity):

JAXB(准确地说:hyperjaxb3)为 Entity(继承策略 = JOINED)、EntityDetails 和 Entities 生成类。此外,它使用“createGetEntitiesResponse”方法创建ObjectFactory 。我正在使用这种方法来编组通过 Hibernate 从实体表中检索到的列表。

理论上,我应该在发送“GetEntitiesRequest”时得到“ Entity ”列表。但是,我得到了“ EntityDetails ”列表。

如果您从一开始就阅读此表格,您可以想象,这是我想要避免的。

如果您需要更多详细信息,persistence.xml 如下:

我使用 Gradle 进行构建自动化,并使用它的 jaxb 插件来生成类:

目前,bindings.xjb,除了标题,只包含:

0 投票
2 回答
2493 浏览

java - 配置 hyperjaxb 以创建休眠映射和 mysql 数据库

我正在使用 hyperjaxb 从 xsd 文件生成 Java 类。如何将其配置为生成休眠注释,并触发hbm2ddl为生成的类创建带有表的 MySQL 数据库?

我从这个链接下载了hibernate的采购订单示例,然后导航到目标目录cmd.exe并运行mvn clean install,但结果文件夹不包含任何java类,而且也不包含任何hibernate/MySQL。我想获得一个从下载的xsd文件创建所有内容的工作示例,这样我就可以将自己的xsd文件插入代码并自动生成所有 java/hibernate/mysql。这样我就可以花时间调整我的xsd文件,以便生成的 java/hibernate/MySQL 是我需要的。

代码示例或分步说明将非常有帮助。我正在使用日食。


**编辑: **

这个问题的答案是在发布了其他一些问题之后得出的。要找到此问题的完整答案,您需要查看其他问题的答案,尤其是此链接中的问题。

0 投票
2 回答
990 浏览

java - 将 hyperjaxb 采购订单教程导入 Eclipse

我想将本教程中的示例应用程序导入 eclipse。我不断收到与文件放置位置相关的错误。当我创建一个 Main 类来运行教程中的代码时,当 Main 类位于构建路径中时,我会从 Eclipse 中获得编译错误,看不到所需的包,或者我得到一个

启动错误:部分不包含主要类型

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

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

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

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

0 投票
1 回答
169 浏览

java - 将 hyperjaxb 生成的实体从 Eclipse 持久化到 mysql

我正在使用本教程hyperjaxb设置在 eclipse 中运行。到目前为止,我已经得到了and ,但它还没有触发在数据库中创建表,并且不清楚我应该在 eclipse 目录结构中的哪个位置找到我创建的用于从上面的教程链接。 如何更改我的 Eclipse 配置以使这些事情发生?marshalunmarshalhbm2ddlMain.javaTestFunctions.java

这是我的 main.java:

TestFunctions.java您可以通过单击此链接阅读更冗长的代码。请注意,尽管代码在我的机器上是左对齐的,但文件共享站点错误地将代码居中对齐。

persistence.properties是:

当我右键单击Main.java并单击时,我目前正在获取以下堆栈跟踪run as.. java application

这是目录结构:

0 投票
2 回答
4120 浏览

java - EntityManager 没有名为 persistence.xml 的持久性提供程序

正如上面的标签所声称的那样,这不是重复的。这个问题还没有被解答。

我正在尝试设置本教程以开始hyperjaxb在 Eclipse 项目中工作。我怎样才能让它看到持久性提供者? hbm2ddl尚未在数据库中创建表结构。这就是应用程序没有看到持久性提供程序的原因吗?还是因为无法从my试图调用它的目录访问persistence.xmlin的内容?以下是具体细节......这行代码: target/generated-sourcessrc/main/javaTestFunctions.java

抛出此错误:

抛出错误的代码在这个方法中:

persistence.xml

persistence.properties是:

eclipse项目的目录结构为:


**编辑: **

只是为了好玩,我将META-INF文件夹移动到与调用类相同的级别,但我得到了同样的错误。这是两个新的屏幕截图,显示了仍然抛出错误的 persistence.xml 位置:


第二次编辑:

Class c = Class.forName("org.eclipse.persistence.jpa.PersistenceProvider");在第 116 行添加,TestFunctions.java当我右键单击Main.java并执行时触发以下错误Run As..Java Application

这是新TestFunctions.setUpPersistence()方法:

当我替换Class c = Class.forName("org.eclipse.persistence.jpa.PersistenceProvider");为 时Class c = Class.forName("org.hibernate.ejb.HibernatePersistence");,我收到类似的错误。但是,Class c = Class.forName("javax.persistence.spi.PersistenceProvider");不会引发任何错误,因此程序javax.persistence.PersistenceException: No Persistence provider for EntityManager named org.jvnet.hyperjaxb3.ejb.tests.po会继续运行,直到下游进一步引发相同的错误。

这是否告诉我们更多有关错误原因的信息? 此外,hyperjaxb创建一个persistence.xml并将其放置在目标文件夹中。此错误发生persistence.xml在该位置时,并且当我persistence.xml如上所示移动时仍然存在。hyperjaxb因为不能很好地使用 eclipse 导致这个问题吗?

0 投票
1 回答
6568 浏览

xml - “xs:complexType[@name='Any']”的 XPath 评估导致空目标节点

我正在尝试让 hyperjaxb 处理真实的模式。我从此链接下载并解压缩了 hyperjaxb maven 项目,然后导航到根目录cmd.exe,并使用示例数据通过运行mvn clean install对其进行测试,以确保它适用于示例模式。然后,我将 、 和 文件替换schema.xsdpo.xml实际bindings.xjb图形的精简版本,以便我可以准备通过上面链接的 hyperjaxb 项目运行真正的应用程序。然后我又跑mvn clean install了。但是,我收到以下错误消息:

从您可以在此链接中阅读的替换bindings.xjb文件中。 使用此链接上的文件,以及您可以在此链接上阅读的文件。 schema.xsdpo.xml

bindings.xjb 的相关部分是:

ANYschema.xsd 中 complexType 的定义为:

请注意,完整的代码在上面的链接中。 如何解决此错误?

0 投票
1 回答
6050 浏览

xml - 不支持的绑定命名空间“”

我有一个架构,JAXB每次都能完美地生成 java 类。我正在尝试hyperjaxb处理相同的架构。为此,我从该链接hyperjaxb下载并解压缩了maven 项目,然后使用导航到根目录并使用 示例数据对其进行测试,以确保它与示例模式一起使用。然后,我用在 中完美运行的完整 shema替换了、和文件,包括许多导入的命名空间。然后我又跑了。但是,我收到以下错误消息:cmd.exemvn clean installschema.xsdpo.xmlbindings.xjbJAXBmvn clean install

在示例中,schema.xsd 顶部的模式标记是:

相比之下,我的自定义架构使用:

请注意xmlns="urn:some-org:v3"我的自定义架构中的架构标记。它不包括像xmlns:somequalifier="urn:some-org:v3". 这是造成问题的原因吗?它在没有限定符的 JAXB 中完美运行。遍历整个命名空间并在每种类型前面添加一个限定符将是一个很大的痛苦。

或者,可能是示例项目的 pom.xml 中定义的结构(在上面链接的 zip 文件中)导致了问题。它们不同于基本的 JAXB 工具。

我怎样才能避免这个问题? 最好不要为每种类型添加限定符。我的架构中有几千行。

堆栈跟踪的以下行可能会有所帮助:

0 投票
3 回答
7180 浏览

java - “http://annox.dev.java.net”自定义需要“-Xannotate”开关

我正在尝试通过 hyperjaxb 运行真正的模式。我已经使用 jaxb 反复测试了架构,并且 jaxb 每次都正确导入架构。但是,当我尝试让 hyperjaxb 从同一架构生成带有 hibernate 注释的 java 类时,我收到以下错误:

我已经用谷歌搜索了这个错误消息并阅读了其他关于它的帖子,但没有找到任何解决它的干净说明。我找到的最接近的是这篇文章,它说 annox 插件is activated by the -Xannotate command-line argument

我阅读了这个链接,但是在 xsd 文件中添加以下内容并没有消除错误,可能是因为在任何地方xsd都没有使用jaxb前缀。

我已经上传了一个包含所有相关材料的 zip 文件,以便快速将问题重现到此链接。它是项目的 zip 文件,包括预期的模式。重现问题所需要做的就是将命令行导航到解压缩项目的根目录并键入mvn clean install以重现错误。

如何解决此错误?


编辑:

我已经尝试将以下内容添加到 pom.xml 中的插件配置中,但到目前为止还没有成功。


第二次编辑:

我在 中添加了@lexicore 的建议pom.xml,但结果是 a null pointer exception,您可以通过单击此链接阅读。为了促进hyperjaxb其他人更容易使用,我pom.xml 在此链接中包含了全部当前内容。这个修改pom.xml后的 zip 文件和上面的 zip 文件一起足以在几分钟内重现问题。这是配置问题还是错误?

0 投票
1 回答
4903 浏览

java - HibernateException:无法从类 [java.lang.Boolean] 预期实例/子类中解析实体名称

我有一个实体,它代表一个从到使用root element的大xml文件。我正在尝试使用 hibernate 来坚持它,但它正在抛出一个. 异常消息只是声明它不能将值转换为特定的对象类型。unmarshalledxmljavajaxbEntityManager.persist(elementname)HibernateExceptionBoolean

这是在该行引发错误的代码persist(cd)

我上传了一个精简的工作 Eclipse 项目,可以让您在几分钟内重新创建这个问题。它是一个 zip 文件,您可以从此链接下载。要在您的机器上重现问题,只需:

然后它将重新创建错误。然后,您可以查看文件中的架构和schema.xsd文件中精简的 xml po.xml

您可以在以下屏幕截图中 查看目录结构并查看persistence.propertiespo.xmlschema.xsd和的位置:Main.java

我还得到以下堆栈跟踪: