|
|
(15 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
− | {{EclipseLink_UserGuide
| + | Please see http://www.eclipse.org/eclipselink/documentation/2.4/moxy/special_schema_types001.htm |
− | |info=y
| + | |
− | |toc=y
| + | |
− | |eclipselink=y
| + | |
− | |eclipselinktype=MOXy
| + | |
− | |api=y
| + | |
− | |apis= *
| + | |
− | }}
| + | |
− | =Date and Time Types=
| + | |
− | You can use the '''@XMLSchemaType''' annotation to customize the XML representation of date and time information.
| + | |
− | | + | |
− | EclipseLink JAXB (MOXy) also supports the following types which are not covered in the JAXB specification (JSR-222):
| + | |
− | * java.sql.Date
| + | |
− | * java.sql.Time
| + | |
− | * java.sql.Timestamp
| + | |
− | | + | |
− | ==Sample Schema==
| + | |
− | This example shows how JAXB handles date and time information. In this sample XML schema, notice that the '''date-of-birth''' element is of type '''xsd:date'''.
| + | |
− | | + | |
− | <source lang="xml">
| + | |
− |
| + | |
− | <?xml version="1.0" encoding="UTF-8"?>
| + | |
− | <xsd:schema
| + | |
− | xmlns:xsd="http://www.w3.org/2001/XMLSchema">
| + | |
− |
| + | |
− | <xsd:element name="customer">
| + | |
− | <xsd:complexType>
| + | |
− | <xsd:sequence>
| + | |
− | <xsd:element
| + | |
− | name="date-of-birth"
| + | |
− | type="xsd:date"
| + | |
− | minOccurs="0"/>
| + | |
− | </xsd:sequence>
| + | |
− | </xsd:complexType>
| + | |
− | </xsd:element>
| + | |
− |
| + | |
− | </xsd:schema>
| + | |
− | | + | |
− | </source>
| + | |
− | | + | |
− | ==Generated Model==
| + | |
− | - XMLGregorianCalendar Property
| + | |
− | | + | |
− | | + | |
− | By using this XJC call, you can generate a class model from the sample schema. For example:
| + | |
− | <tt>
| + | |
− | xjc -d out -p blog.date date.xsd
| + | |
− | </tt>
| + | |
− | | + | |
− | This will generate the following '''Customer''' class:
| + | |
− | <source lang="java">
| + | |
− | package blog.date;
| + | |
− |
| + | |
− | import javax.xml.bind.annotation.XmlAccessType;
| + | |
− | import javax.xml.bind.annotation.XmlAccessorType;
| + | |
− | import javax.xml.bind.annotation.XmlElement;
| + | |
− | import javax.xml.bind.annotation.XmlRootElement;
| + | |
− | import javax.xml.bind.annotation.XmlSchemaType;
| + | |
− | import javax.xml.bind.annotation.XmlType;
| + | |
− | import javax.xml.datatype.XMLGregorianCalendar;
| + | |
− |
| + | |
− | @XmlAccessorType(XmlAccessType.FIELD)
| + | |
− | @XmlType(name = "", propOrder = {"dateOfBirth"})
| + | |
− | @XmlRootElement(name = "customer")
| + | |
− | public class Customer {
| + | |
− |
| + | |
− | @XmlElement(name = "date-of-birth")
| + | |
− | @XmlSchemaType(name = "date")
| + | |
− | protected XMLGregorianCalendar dateOfBirth;
| + | |
− |
| + | |
− | public XMLGregorianCalendar getDateOfBirth() {
| + | |
− | return dateOfBirth;
| + | |
− | }
| + | |
− |
| + | |
− | public void setDateOfBirth(XMLGregorianCalendar value) {
| + | |
− | this.dateOfBirth = value;
| + | |
− | }
| + | |
− |
| + | |
− | }
| + | |
− | </source>
| + | |
− | | + | |
− | Notice that:
| + | |
− | *The '''dateOfBirth''' property is of type '''javax.xml.datatype.XMLGregorianCalendar'''
| + | |
− | *The '''dateOfBirth''' property uses the '''@XmlSchemaType''' annotation.
| + | |
− | | + | |
− | Some Java data types (like '''XMLGregorianCalendar''') have multiple XML representations (like '''xsd:date''', '''xsd:time''' or '''xsd:dateTime'''). Use '''@XmlSchemaType''' to select the appropriate representation.
| + | |
− | | + | |
− | | + | |
− | User Defined - Date (or Calendar) Property
| + | |
− | | + | |
− | Even though the JAXB XML schema to Java compiler (XJC) generates a property of type XMLGregorianCalendar by default, you are free to use java.util.Date and java.util.Calendar as well.
| + | |
− | <source lang="java">
| + | |
− |
| + | |
− | package blog.date;
| + | |
− |
| + | |
− | import java.util.Date;
| + | |
− |
| + | |
− | import javax.xml.bind.annotation.XmlAccessType;
| + | |
− | import javax.xml.bind.annotation.XmlAccessorType;
| + | |
− | import javax.xml.bind.annotation.XmlElement;
| + | |
− | import javax.xml.bind.annotation.XmlRootElement;
| + | |
− | import javax.xml.bind.annotation.XmlSchemaType;
| + | |
− |
| + | |
− | @XmlAccessorType(XmlAccessType.FIELD)
| + | |
− | @XmlRootElement(name = "customer")
| + | |
− | public class Customer {
| + | |
− |
| + | |
− | @XmlElement(name = "date-of-birth")
| + | |
− | @XmlSchemaType(name = "date")
| + | |
− | protected Date dateOfBirth;
| + | |
− |
| + | |
− | public Date getDateOfBirth() {
| + | |
− | return dateOfBirth;
| + | |
− | }
| + | |
− |
| + | |
− | public void setDateOfBirth(Date value) {
| + | |
− | this.dateOfBirth = value;
| + | |
− | }
| + | |
− |
| + | |
− | }
| + | |
− | </source>
| + | |
− | EclipseLink JAXB (MOXy) Extension
| + | |
− | | + | |
− | EclipseLink JAXB (MOXy) also supports the following types which are not covered in the JAXB specification (JSR-222):
| + | |
− | | + | |
− | * java.sql.Date
| + | |
− | * java.sql.Time
| + | |
− | * java.sql.Timestamp
| + | |
− | | + | |
− | | + | |
− | {{EclipseLink_MOXy
| + | |
− | |previous= [[EclipseLink/UserGuide/MOXy/Simple_Values/Special_Schema_Types|Special Schema Types]]
| + | |
− | |up= [[EclipseLink/UserGuide/MOXy/Simple_Values/Special_Schema_Types|Special Schema Types]]
| + | |
− | |next= [[EclipseLink/UserGuide/MOXy/Simple_Values/Binary_Types|Binary Types]]
| + | |
− | |version=2.2.0 Draft
| + | |
− | }}
| + | |