当我在课堂上有地图时
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,它可以工作。
答案 0 :(得分:0)
可以应用的一种解决方法是创建:
public class RangeWrapper {
@Transient
@XmlTransient
final Map<Range<BigDecimal>, BigDecimal> ranges;
}
并在父类中使用它如下:
@Transient
@XmlTransient
private RangeWrapper ranges;