2014-02-11 106 views
0

我有一個XSD,並希望將某些屬性標記爲XmlTransient,以便由XJC在Java中生成屬性並通過JAXB進行編組和解組忽略該屬性。如何使用XJC爲屬性添加@XmlTransient註釋

我可以修改XSD,但不知道應該將哪些內容放入xs:annotation標記中以自定義JAXB綁定。

這裏是我的XSD到目前爲止

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:hj="http://hyperjaxb3.jvnet.org/ejb/schemas/customizations" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" jaxb:extensionBindingPrefixes="hj orm"> 
    <xs:complexType name="tripRegisterType"> 
    <xs:annotation> 
     <xs:appinfo> 
     <hj:entity> 
      <orm:table name="simplemaketripprocess_tripregistertype" /> 
     </hj:entity> 
     <hj:generated-id name="tripregistertypeid" /> 
     </xs:appinfo> 
    </xs:annotation> 
    <xs:sequence> 
     <xs:element name="startDate" type="xs:date"> 
     <xs:annotation> 
      <xs:appinfo> 
      <hj:basic> 
       <orm:column name="startDate" column-definition="timestamp" /> 
      </hj:basic> 
      </xs:appinfo> 
     </xs:annotation> 
     </xs:element> 
     <xs:element name="endDate" type="xs:date"> 
     <xs:annotation> 
      <xs:appinfo> 
      <hj:basic> 
       <orm:column name="endDate" column-definition="timestamp" /> 
      </hj:basic> 
      </xs:appinfo> 
     </xs:annotation> 
     </xs:element> 
     <xs:element name="want_flight" type="xs:boolean" /> 
     <xs:element name="want_hotel" type="xs:boolean" /> 
     <xs:element name="want_car" type="xs:boolean" /> 
     <xs:element name="payAccNumber" type="xs:string" /> 

     <!-- THE NEXT COLOUMS I'D LIKE TO BE XML TRANSIENT--> 

     <xs:element name="companyid" type="xs:long" /> 
     <xs:element name="groupid" type="xs:long" /> 
     <xs:element name="userid" type="xs:long" /> 
     <xs:element name="username" type="xs:string" /> 
     <xs:element name="createDate" type="xs:date"> 
     <xs:annotation> 
      <xs:appinfo> 
      <hj:basic> 
       <orm:column name="createDate" column-definition="timestamp" /> 
      </hj:basic> 
      </xs:appinfo> 
     </xs:annotation> 
     </xs:element> 
     <xs:element name="modifiedDate" type="xs:date"> 
     <xs:annotation> 
      <xs:appinfo> 
      <hj:basic> 
       <orm:column name="modifiedDate" column-definition="timestamp" /> 
      </hj:basic> 
      </xs:appinfo> 
     </xs:annotation> 
     </xs:element> 
    </xs:sequence> 
    </xs:complexType> 
</xs:schema> 
+2

模式表示實例的結構,所以如果它在模式中,它將在實例中。如果您不希望以XML表示數據,只需將其從XSD中移除即可。您可以對生成的類進行子類化並添加標記爲@XmlTransient的新屬性,這些屬性將不會保存在XML中。 – helderdarocha

回答

1

嘗試Annotate插件此。 (Diclaimer:我是作者。) 有一個例子@XmlRootElement@XmlTransient會是類似的。

<annox:annotate target="class"> 
    <annox:annotate annox:class="javax.xml.bind.annotation.XmlRootElement" 
     namespace="someNamespace"/> 
</annox:annotate> 
+0

我想用相同的想法來標記一個字段transient.But似乎並沒有工作。 –

+0

@MandarKulkarni不幸的是,這是「不工作」的評論,沒有人可以做任何事情。問另一個問題,詳細描述你的問題,展示你到目前爲止所嘗試的,然後你可能會得到幫助。 至於現在對「似乎不起作用」的答案是,也許你做錯了什麼。 – lexicore