问题标签 [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 回答
165 浏览

hibernate - Hyperjaxb3:从枚举元素创建查找表

我有一个 xsd 文件,其中包含一个具有枚举约束的元素:

我希望CommsAddressType生成的 Java 类中的字段是生成的枚举,其值EMAILPHONE. 反过来,我希望 Hibernate 自动生成我的数据库模式,其中包含一个CommsAddressType包含两行值EMAILPHONE. 然后该Request表可以简单地用一CommsAddressTypeId列引用这些。

目前,Hyperjaxb3使用type 字段生成我的Request类:CommsAddressTypeString

并生成模式,以便Request表具有CommsAddressTypetype 列VARCHAR。这显然会导致大量不必要的重复数据。

有什么方法可以实现我上面描述的吗?此外,当我向客户公开 xsd 时,我想尽可能避免在架构中包含任何 jaxb 或 hyperjaxb 标记。

0 投票
1 回答
191 浏览

maven - 通过外部 jaxb-Binding 编辑 @java.persitence.Entity 的名称参数

我有以下星座:B1.xsd 和 B2.xsd 都导入 A.xsd。使用maven-hyperjaxb3-plugin,我为 B1.xsd 和 B2.xsd 创建了带有 JPA 注释的 Java 类。所以 A.xsd 的类是在 B1.xsd 的项目中创建的,而 es 在 B2.xsd 的项目中也是如此。为了在一个持久性单元中使用这两组类,我通过 jaxb 外部绑定设置每个实体上的数据库模式,如Editing @java.persitence.Table in external jaxb-Binding所示。

问题是,在部署到wildfly后,wildfly会抛出org.hibernate.DuplicateMappingException: duplicate import: B1_ClassName refer to both B1_ClassName and B2_ClassName (尝试使用auto-import=\"false\")"}}

所以我需要做的是通过jaxb外部绑定编辑Entity注解的name参数,这样

看起来像

我的实际bindings-xjc.xjb看起来像这样

有人知道如何编辑@java.persitence.Entity 的名称参数吗?

0 投票
1 回答
425 浏览

hibernate - 在 hyperjaxb3 生成的 java 类中使用完全限定名称

我已经从 hyperjax3 生成了 .java 类,这些类已经用@Entity 和 @Table等注释进行了注释。”

在@Entity 中,类名自动添加如下: @Entity(name = "MyClassName") 但是我希望这个名称字段具有完全限定的类名 ,因为
@Entity(name = "myPackage.here.MyClassName") 我正在使用 hyperjaxb3-ejb-samples-po-initial-0.5.6示例并生成带注释的 java 类通过运行mvn clean install我的 XSD 模式存在src\main\resources于 maven 项目的文件夹中。

*我已经搜索并找到了一种使用 auto-import=false的方式,但我无法将其合并,因为我只是在运行该 maven 项目。

0 投票
1 回答
127 浏览

spring - 消除 hyperjaxb 生成的类和 apache cxf 生成的类之间的歧义

我有以下项目结构:

服务父母

|__服务模式

|__服务数据库

|__服务合同

|__服务实施

我正在使用 hyperjaxb3,因为我最终需要通过 Web 服务传递的对象是最终存储在数据库中的对象(不需要转换)。

在模块服务模式中,我定义了我将在我的 Web 服务中使用的 XSD 模式。service-database将通过 hyperjaxb3 使用生成 JPA-JAXB 对象。service-contract将使用 cxf-codegen-plugin maven 插件生成 java 服务接口。service-implementation将是最终的 Web 服务实现。我认为这个想法是可以的。但是,当我使用 hyperjaxb3 和 cxf-codegen-plugin 时,问题就出现了,因为我需要 JPA 类(我使用 hyperjaxb3 生成的那些)来扩展BaseCustomClass。问题是,当我为 web 服务方法persitCustom(CustomType)创建测试时,XML 被反序列化为 CustomType由 cxf-codegen-plugin 生成(这是我用来生成服务接口的工具)。现在,该类不完全是由hyperjaxb3生成的 CustomType(即使它在编译时不是问题,因为两个类“几乎”相同,相同的属性,相同的包等......)问题是怎么做我强制我的服务实现使用 hyperjaxb3 生成的类而不是cxf-codegen-plugin生成的类。

这些是我正在使用的版本

这是针对 cxf-codegen-plugin

0 投票
1 回答
272 浏览

java - 强制 hyperjaxb 为 OneToMany 关系生成 Set 而不是 List

我正在使用 hyperjaxb 从 XSD 文件生成带有 JAXB-JPA 注释的类。我有许多遭遇的角色实体。这是自定义部分

到目前为止,一切都很好。问题是,默认情况下,这会生成此映射

问题是我需要使用映射Set而不是List. 如何使用自定义来实现这一点?

0 投票
1 回答
71 浏览

java - 如何使用 hyperjaxb 添加 NamedQueries 注释

我的问题非常简单明了。我需要在生成的实体类中添加一个 @NamedQueries 注释。JPA 层是使用 Hyperjaxb 生成的。我不知道如何使用添加此行的元素

如何将该特定注释添加到生成的类型?

0 投票
1 回答
2040 浏览

jaxb - HyperJaxb3 项目中发生了什么?

我知道 Hyperjaxb3 库对我的项目非常有用,阅读了多个站点的一些描述,并决定将其嵌入到我的 Spring-Hibernate 项目中。

我在https://jaxb.java.net/中找到了对 Hyperjaxb3 的引用,这看起来很官方,但是超链接 - http://confluence.highsource.org/display/HJ3/Home - 没有打开。

我找到了一些旧的 POM 示例,将其包含在我的项目中,并找到了一些旧版本的引用,试图消除它们,但现在我似乎遇到了对旧 Hibernate 版本的依赖,错误就像这:

java.util.ServiceConfigurationError:com.sun.tools.xjc.Plugin:Provider org.jvnet.hyperjaxb3.hibernate.plugin.HibernatePlugin 无法实例化:java.lang.NoClassDefFoundError:org/hibernate/type/MutableType

我想知道是否有更好的 Maven 条目,如果项目还存在,以及如何将它与现代 Hibernate 一起使用。

这是我关于 Hyperjaxb3 的 pom 摘录,其中我排除了一些过时的链接并指定了其他依赖项的最新版本:

我目前没有尝试生成带注释的 Hibernate 实体类,而是来自 PurchaseOdrer 示例的 POJO。这是我目前所做的:

0 投票
1 回答
1063 浏览

java - 通过动态改变 XSD 生成带有 DB 数据的 XML

考虑一个商店的例子,

我有一个商店的 XSD,以及一些包含与库存、记录等相关的数据的表。我有一个 DB 文件,指定与 XSD 相关的数据在表中的位置。我需要参考这个文件和 XSD 来为多个商店创建 XML 记录

我当前的解决方案是通过 XSD 使用 HyperJAXB 生成 JPA 实体并读取数据以生成 XML,但我需要在每次 DB 文件和XSD 有变化。

是否可以在使用 JPA 的同时在运行时适应这些更改,因为 DB 结构很复杂。如果不在运行时进行,我如何才能最大限度地减少适应更改所需的工作量。

0 投票
1 回答
538 浏览

hibernate - 使用 Hyperjaxb3 指定 UUID 生成的 Id 字段

我正在从 xsd 模式中生成类。

我不知道如何判断对象标识符应该是程序中生成的 UUID。我的错误是:

Hibernate: select nextval ('hibernate_sequence') org.hibernate.id.IdentifierGenerationException: 这个类的 ids 必须在调用 save() 之前手动分配:com.vsetec.collect.app.generated.Balance

我的代码是:

upd start 这会在我的 java 中生成以下内容:

如果我添加

,它会说“没有名称为 uuid 的生成器”

如果我添加

,实际上没有添加任何内容,没有添加 UUID 生成器的注释或任何东西。我搜索了“uuid”子字符串,所以我知道。上述错误仍然存​​在。

我想让 Hibernate 生成一个标识符作为 UUID。该文档说它是通过如下注释实现的:

文档在这里:

http://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/Hibernate_User_Guide.html#identifiers-generators-uuid

它描述了如何注释 UUID 类型的字段。我想这是关于如何在 Jaxb 中映射 UUID 字段的另一层问题,所以我首先尝试将其映射为十六进制字符串。但是,如果你有一个解决这个问题的可行解决方案,而且这个解决方案并不罕见,那么它对每个人都会有用。

更新结束

以前使用 HBM 我这样做如下:

更新

我不知道这个 xml 映射对应于什么注释,但它有效。似乎它将 UUID 生成器附加到 String 字段。我不能说类定义是什么,因为我使用了“动态映射”。我的任务只是从 HBM 和动态映射切换到 Hyperjaxb 和生成的类。

ANSWER (以答案的形式,而不是模糊的 rtfm 风格提示)

uuidString 长度应为 36 个字符

附言。批量插入仍然存在问题(怀疑 uuid 欺骗,但还不确定

0 投票
0 回答
232 浏览

java - Hyperjaxb:用于日期列表的 XMLGregorianCalendar 到 java.util.Date

我实现了如何按日期替换 XmlGregorianCalendar 的解决方案?但不幸的是,它不适用于日期列表。在我的 XSD 中,我有

<xs:element name="Attribute1" type="xs:date" minOccurs="0">

Attribute2 是日期列表。如果我用这个属性加载一个实体,我会得到一个java.lang.ClassCastException: org.hibernate.collection.internal.PersistentList incompatible with java.util.Date

我认为问题在于,Hyperjaxb 只创建了一个适配器

也许 Hyperjaxb 还需要为之List<Date>类创建一个 Adapterpublic class Adapter3 extends XmlAdapter<List<String>, List<Date>>

有人对此有解决方案吗?

问候 Erzen

PS:我已经看过问题Simple conversion between java.util.Date and XMLGregorianCalendar , java.util.Date to XMLGregorianCalendar and JAX-WS and Joda-Time? 但这些不适用于我的问题。