JAXB を使用すると、問題が発生します。
エンティティを xml 文字列に変換すると、すべて問題ありません。
しかし、xml String をエンティティに戻すと、一部の情報が失われます (すべて同じ型java.util.Date
です)。
エンティティ内:
public Date flightBaseDate;
xml で:
<flightBaseDate>2013-09-16T00:00:00 08:00</flightBaseDate>
アンマーシャリング後、 をgetFlightBaseDate()
返しますnull
。
私はググった。
1 つの提案に従って、エンティティで @ を使用しました。
それは次のとおりです。
@XmlElement(name = "timestamp", required = true)
public Date flightBaseDate;
私はそれが完璧になると確信しています
が...次のように例外をスローします:
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 カウントの IllegalAnnotationExceptions クラスには、「flightBaseDate」という同じ名前の 2 つのプロパティがあります。 この問題は、次の場所に関連しています。 public java.lang.String com.wonders.nlia.omms.vo.FlightServiceInfoVo.getFlightBaseDate() で com.wonders.nlia.omms.vo.FlightServiceInfoVoで この問題は、次の場所に関連しています。 public java.lang.String com.wonders.nlia.omms.vo.FlightServiceInfoVo.flightBaseDate で com.wonders.nlia.omms.vo.FlightServiceInfoVoで
JAXB がプロパティとその getMethod を区別できなかったのはなぜですか?
それを解決する方法は?
プラットフォーム:jdk7 win7 eclipse tomcat wtp
私のアンマーシャリングコードは次のとおりです。
JAXBContext context = JAXBContext.newInstance(FlightServiceInfoVo.class);
Unmarshaller unMarshaller = context.createUnmarshaller();
FlightServiceInfoVo flightServiceInfoVo =(FlightServiceInfoVo)unMarshaller.unmarshal(new StringReader(flightServiceInfoVoXml));
flightServiceInfoVoXml は文字列です。