先上例子:
这是公司项目中的程序,未经许可,不得使用.
@XmlRootElement(name ="ResourceDescription") @Entity @Table(name = "resource_description") public class ResourceDescription{ private long id; private String resourceId; private String name; private String model; private Date descriptionExpirationTime; private String locationName; private String resourceType; private String temporalAvailability; private Date resourceExpirationTime; private double geoLongitude; private double geoLatitude; private double geoAltitude; private Date lastUpdatedTime; private Date createdTime; private SetoutputDescriptions; private Set inputCommandDescriptions; @XmlElement(name = "resourceType") @Column(name = "resource_type") public String getResourceType() { return resourceType; } public void setResourceType(String resourceType) { this.resourceType = resourceType; } @XmlElement(name = "temporalAvailability") @Column(name = "temporal_availability") public String getTemporalAvailability() { return temporalAvailability; } public void setTemporalAvailability(String temporalAvailability) { this.temporalAvailability = temporalAvailability; } public ResourceDescription() { super(); } public ResourceDescription(String resourceId) { super(); this.resourceId = resourceId; } @XmlTransient @Id @GeneratedValue(generator="identity") @GenericGenerator(name="identity", strategy = "identity") public long getId() { return id; } public void setId(long id) { this.id = id; } @XmlElement(name = "resourceId") @Column(name = "resourceId",unique = true) public String getResourceId() { return resourceId; } public void setResourceId(String resourceId) { this.resourceId = resourceId; } @XmlElement(name = "name") @Column(name = "name") public String getName() { return name; } public void setName(String name) { this.name = name; } @XmlElement(name = "model") @Column(name = "model") public String getModel() { return model; } public void setModel(String model) { this.model = model; } @XmlElement(name = "descriptionExpirationTime") @Temporal(TemporalType.TIMESTAMP) @Column(name = "description_expiration_time") public Date getDescriptionExpirationTime() { return descriptionExpirationTime; } public void setDescriptionExpirationTime(Date descriptionExpirationTime) { this.descriptionExpirationTime = descriptionExpirationTime; } @XmlElement(name = "resourceExpirationTime") @Temporal(TemporalType.TIMESTAMP) @Column(name = "resource_expiration_time") public Date getResourceExpirationTime() { return resourceExpirationTime; } public void setResourceExpirationTime(Date resourceExpirationTime) { this.resourceExpirationTime = resourceExpirationTime; } @XmlElement(name = "geoLongitude") @Column(name = "geo_longitude") public double getGeoLongitude() { return geoLongitude; } public void setGeoLongitude(double geoLongitude) { this.geoLongitude = geoLongitude; } @XmlElement(name = "geoLatitude") @Column(name = "geo_latitude") public double getGeoLatitude() { return geoLatitude; } public void setGeoLatitude(double geoLatitude) { this.geoLatitude = geoLatitude; } @XmlElement(name = "geoAltitude") @Column(name = "geo_altitude") public double getGeoAltitude() { return geoAltitude; } public void setGeoAltitude(double geoAltitude) { this.geoAltitude = geoAltitude; } @XmlElement(name = "locationName") @Column(name = "location_name") public String getLocationName() { return locationName; } public void setLocationName(String locationName) { this.locationName = locationName; } @XmlElement(name = "createdTime") @Temporal(TemporalType.TIMESTAMP) @Column(name = "created_time") public Date getCreatedTime() { return createdTime; } public void setCreatedTime(Date createdTime) { this.createdTime = createdTime; } @XmlElement(name = "lastUpdatedTime") @Temporal(TemporalType.TIMESTAMP) @Column(name = "last_updated_time") public Date getLastUpdatedTime() { return lastUpdatedTime; } public void setLastUpdatedTime(Date lastUpdatedTime) { this.lastUpdatedTime = lastUpdatedTime; } @XmlElementWrapper(name="outputDescriptions") @XmlElement(name = "outputDescription") @OneToMany(cascade={CascadeType.ALL}, targetEntity=com.ericsson.m2m.resourcedirectory.persistence.entity.OutputDescription.class,mappedBy="resourceDescription") public Set getOutputDescriptions() { return this.outputDescriptions; } public void setOutputDescriptions(Set outputDescriptions) { this.outputDescriptions = outputDescriptions; } @XmlElementWrapper(name="inputCommandDescriptions") @XmlElement(name = "inputCommandDescription") @OneToMany(cascade={CascadeType.ALL}, targetEntity=com.ericsson.m2m.resourcedirectory.persistence.entity.InputCommandDescription.class,mappedBy="resourceDescription") public Set getInputCommandDescriptions() { return this.inputCommandDescriptions; } public void setInputCommandDescriptions(Set inputCommandDescriptions) { this.inputCommandDescriptions = inputCommandDescriptions; } } @XmlRootElement(name ="inputCommandDescription") @XmlType(propOrder = { "name", "parameterType", "preCondition", "postCondition" }) @Entity @Table(name = "input_command_description") public class InputCommandDescription { private long id; private String name; private String parameterType; private String preCondition; private String postCondition; private ResourceDescription resourceDescription; public InputCommandDescription() { super(); } @XmlTransient @Id @GeneratedValue(strategy = GenerationType.AUTO) public long getId() { return id; } public void setId(long id) { this.id = id; } @XmlElement(name = "name") @Column(name = "name") public String getName() { return name; } public void setName(String name) { this.name = name; } @XmlElement(name = "parameterType") @Column(name = "parameter_type") public String getParameterType() { return parameterType; } public void setParameterType(String parameterType) { this.parameterType = parameterType; } @XmlElement(name = "preCondition") @Column(name = "pre_condition") public String getPreCondition() { return preCondition; } public void setPreCondition(String preCondition) { this.preCondition = preCondition; } @XmlElement(name = "postCondition") @Column(name = "post_condition") public String getPostCondition() { return postCondition; } public void setPostCondition(String postCondition) { this.postCondition = postCondition; } @XmlTransient @ManyToOne(targetEntity=com.ericsson.m2m.resourcedirectory.persistence.entity.ResourceDescription.class,cascade={CascadeType.ALL}) @JoinColumn(name="resource_description_id") public ResourceDescription getResourceDescription() { return resourceDescription; } public void setResourceDescription(ResourceDescription resourceDescription) { this.resourceDescription = resourceDescription; }
这个程序是hibernate和jaxb混在一起的classes定义.查出来的东东直接转xml或json输出.
下面解释一下annotation.
@XmlRootElement(name ="inputCommandDescription") 不说了
@XmlTransient 不想输出的,用它标注一下.注意,防止循环引用,onetomany一定要用,否则·····
@XmlElementWrapper(name="inputCommandDescriptions") 在list或set外面包一层,好看。
@XmlType(propOrder = { "name", "parameterType", "preCondition", "postCondition" })定义输出顺序
2011-11-11T22:22:22+08:00 2011-01-13T13:13:13+08:00 231.0 12.0 34.0 3 3 3 3 1 1 1 1 4 4 4 4 2011-04-04T23:23:23+08:00 1 1 1 3 3 3 3 2 2 2 2 1 1 1 1 2012-12-12T12:12:12+08:00 1 1 1