MOXy xml-transient指令不适用于Map <range <bigdecimal>,BigDecimal&gt;

时间:2016-09-09 06:27:32

标签: jaxb eclipselink moxy jaxb2

当我在课堂上有地图时

private Map<Range<BigDecimal>, BigDecimal> 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.

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

1 个答案:

答案 0 :(得分:0)

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

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

并在父类中使用它如下:

@Transient
@XmlTransient
private RangeWrapper ranges;