2016-09-15 217 views
0

我有一个普遍问题,如果需要,将提供更多信息。我有一个生成多个枚举的模式。我能够增加使用枚举的数量:如何控制生成的JAXB枚举

typesafeEnumMaxMembers="34431" 

解决了创建枚举的直接问题。但是发生的是它在一个类中产生了超过65k的常量。这是超过java的限制。我怎样才能使用这个数据的另一个数据结构?我有一个架构,省略枚举,但它似乎仍然生成它们。

我的目标是看看是否有人遇到过这种类型的东西。如果可能,我宁愿不以任何方式更改架构。我已经阅读了JAXB文档并尝试了各种各样的东西,但它似乎无法解决我的问题。

任何有识之士将不胜感激。

谢谢

戴夫

回答

1

一般来说,如果JAXB不能产生一个枚举由于字典过大的尺寸,它会创建一个文本字段来代替。

如果要将文本值转换为bean中的其他值,则始终可以使用XMLAdapter将该值转换为您喜欢的某种自定义类型。您需要对各自的getter/field使用@XmlJavaTypeAdapter注释。

+0

我将看看XMLAdapter。是否有任何绑定可以让我忽略这个XSD或者在类中自动生成一个空方法? – djratliff

+0

不,由于方法绑定工作。绑定应该是XML和生成的bean之间的1-1映射。忽略一个XML元素会导致各种解组问题。通过使用'@ XmlTransient'注释可以以相反的方式执行(将生成的bean中的元素标记为不反映在模式中)。 –