【问题标题】:including xs:restriction(s) as annotation(s) in moxy generated java classes包括 xs:restriction(s) 作为 moxy 生成的 java 类中的注释
【发布时间】:2025-12-31 01:10:11
【问题描述】:

我有一些新的xsd schema 版本更新,我需要为其生成相应的java 类。过去,我了解总是使用 EclipseLink 的 Moxy JAXB 实现生成的类,我可以看到如果模式包含 <xs:restriction/> 模式,例如 <xs:pattern value="[a-zA-Z]"/>,那么相应的 java 类将使用 @Pattern(regexp="[a-zA-Z]", message= "...") 注释生成他们。

当我在我的设置中使用 Moxy 生成这些 java 类时,这些类生成正常,但其中没有 @Pattern 注释。我对 JAXB 不太熟悉,我想知道我可能缺少什么以允许这些注释从模式派生并自动插入到 java 类中。

我不太确定这是否是因为我没有使用足够新的 Moxy 版本(目前使用 EclipseLink 的 2.1.2 版本),它允许自动创建这些注释,或者之前是否使用了另一个工具将这些注释插入到类中。

非常感谢您对此事的任何帮助。

问候, 下午。

【问题讨论】:

    标签: java annotations jaxb xsd moxy


    【解决方案1】:

    注意:我是EclipseLink JAXB (MOXy) 领导,也是JAXB (JSR-222) 专家组的成员。

    生成类

    EclipseLink JAXB (MOXy) 包含来自 JAXB reference implementation 的 XML Schema to Java Compiler (XJC)。目前 XJC 工具没有内置机制在模型中生成 Bean Validation (JSR-303) 注释。

    XJC 扩展

    我自己没有尝试过以下扩展,但看起来它可以满足您的需求。由于 XJC 具有很强的可扩展性,因此可能还有其他可用的插件。

    EclipseLink 的当前版本

    我不太确定这是不是因为我没有使用足够新的 Moxy 版本(目前使用 EclipseLink 2.1.2 版本)

    当前版本为 EclipseLink 2.4.1,可从以下链接获取。它包含新的扩展名,例如JSON binding

    【讨论】:

    • 嗨 Blaise,您对使用 krasa-jaxb-tools 插件的建议很好,它正是我想要的。我花了一段时间才让它在 Xjc 中作为插件运行,但它现在运行良好。感谢您的帮助!