4

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 は文字列です。

4

2 に答える 2