【问题标题】:MOXy xml-transient directive does not work on Map<Range<BigDecimal>,BigDecimal>MOXy xml-transient 指令不适用于 Map<Range<BigDecimal>,BigDecimal>
【发布时间】:2016-09-09 06:27:32
【问题描述】:

当我在课堂上有地图时

private Map&lt;Range&lt;BigDecimal&gt;, BigDecimal&gt; ranges;

我使用以下 XML 映射文件:

<?xml version="1.0"?>
<xml-bindings
        xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
        package-name="package-name">
    <xml-schema element-form-default="QUALIFIED">
        <xml-ns prefix="prefix" namespace-uri="namespace-uri"/>
    </xml-schema>
    <java-types>
        <java-type name="MyJavaType" xml-accessor-type="FIELD">
            <java-attributes>
                <xml-transient java-attribute="ranges"/>
            </java-attributes>
        </java-type>
    </java-types>
</xml-bindings>

为什么 xml-transient 不起作用?

它失败了:

The class com.google.common.collect.Range requires a zero argument constructor or a specified factory method.  
Note that non-static inner classes do not have zero argument constructors and are not supported.

如果我使用列表,它可以工作。

【问题讨论】:

    标签: jaxb eclipselink moxy jaxb2


    【解决方案1】:

    可以应用的一种解决方法是创建:

    public class RangeWrapper {
        @Transient
        @XmlTransient
        final Map<Range<BigDecimal>, BigDecimal> ranges;
    }
    

    并在父类中使用如下:

    @Transient
    @XmlTransient
    private RangeWrapper ranges;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 2012-05-30
      • 2020-09-17
      相关资源
      最近更新 更多