【问题标题】:Is there anyway to annotate only required fields for JAXB无论如何要注释 JAXB 的必填字段
【发布时间】:2011-10-17 16:38:55
【问题描述】:

我正在使用 JAXB 将 Hibernate 对象转换为 XML。在我们的课程中,我们有大约 50 个字段,我只需要其中的 10 个。

基本上,我用 2 个属性定义了 XmlType#propOrder。 JAXB 抱怨说,一些公共吸气剂不是 proporder 的一部分。 我看到,如果我不使用 XmlTransient/XmlElement 中的任何一个来标记属性,JAXB 就会抱怨它。有没有办法跳过在每个字段上写“XmlTransient”?

【问题讨论】:

  • 使用正则表达式搜索/替换或复制/粘贴 40 次?这似乎并不令人生畏。
  • 当然,这是可行的。但仍在探索更好的选择:)

标签: java xml jaxb


【解决方案1】:

您可以使用@XmlAccessorType(XmlAccessType.NONE),以便仅将带注释的字段/属性编组为 XML。 JAXB 不需要任何注释。仅需要注释来覆盖默认行为。您看到了哪些例外情况?

更多信息

【讨论】:

  • 基本上,我用 2 个属性定义了 XmlType#propOrder。 JAXB 抱怨一些公共 getter 不是 proporder 的一部分。
  • @Prabhjot - JAXB 实现期望映射到 XML 元素的所有属性都将包含在 @XmlType 的 propOrder 中。设置 @XmlAccessorType 应该会为您提供所需的内容。
  • @Blaise:我有 JPA 实体(带注释),带有两个字段(A 和 B,两个 JAXB 也都注释了)。对于某些用例,我只能填充 A,而对于某些用例,只能填充 B。当我序列化实体时,它总是尝试同时序列化(这很明显)并延迟加载依赖项 - 我想避免这种延迟加载(当然,我不能使用@XmlTransient)。我想为不同的用例定制这个默认行为。提前致谢
猜你喜欢
  • 2017-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多