2016-09-09 6 views
0

Когда у меня есть карта в классеMoxy XML-переходная директива не работает на карте <Range <BigDecimal>, BigDecimal>

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. 

Если я использую список, он работает.

ответ

0

Один из способов, который может быть применен, чтобы создать:

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

и использовать его в родительском классе следующим образом:

@Transient 
@XmlTransient 
private RangeWrapper ranges;