看到很多中文的技术文章介绍jaxb,但是遇到问题却都没有什么帮助.很多都是转载,举例,例子还很浅,不全面.然后呢,有问题又不知道英文怎么搜索.现在把我遇到问题总结一下,希望对其他人有帮助.
先上例子:
这是公司项目中的程序,未经许可,不得使用.
@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 Set<OutputDescription> outputDescriptions;
private Set<InputCommandDescription> 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<OutputDescription> getOutputDescriptions() {
return this.outputDescriptions;
}
public void setOutputDescriptions(Set<OutputDescription> 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<InputCommandDescription> getInputCommandDescriptions() {
return this.inputCommandDescriptions;
}
public void setInputCommandDescriptions(Set<InputCommandDescription> 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" })定义输出顺序
<ResourceDescriptions><ResourceDescription><createdTime>2011-11-11T22:22:22+08:00</createdTime><descriptionExpirationTime>2011-01-13T13:13:13+08:00</descriptionExpirationTime><geoAltitude>231.0</geoAltitude><geoLatitude>12.0</geoLatitude><geoLongitude>34.0</geoLongitude><inputCommandDescriptions><inputCommandDescription><name>3</name><parameterType>3</parameterType><postCondition>3</postCondition><preCondition>3</preCondition></inputCommandDescription><inputCommandDescription><name>1</name><parameterType>1</parameterType><postCondition>1</postCondition><preCondition>1</preCondition></inputCommandDescription><inputCommandDescription><name>4</name><parameterType>4</parameterType><postCondition>4</postCondition><preCondition>4</preCondition></inputCommandDescription></inputCommandDescriptions><lastUpdatedTime>2011-04-04T23:23:23+08:00</lastUpdatedTime><locationName>1</locationName><model>1</model><name>1</name><outputDescriptions><outputDescription><featureName>3</featureName><preCondition>3</preCondition><propertyName>3</propertyName><propertyUnit>3</propertyUnit></outputDescription><outputDescription><featureName>2</featureName><preCondition>2</preCondition><propertyName>2</propertyName><propertyUnit>2</propertyUnit></outputDescription><outputDescription><featureName>1</featureName><preCondition>1</preCondition><propertyName>1</propertyName><propertyUnit>1</propertyUnit></outputDescription></outputDescriptions><resourceExpirationTime>2012-12-12T12:12:12+08:00</resourceExpirationTime><resourceId>1</resourceId><resourceType>1</resourceType><temporalAvailability>1</temporalAvailability></ResourceDescription></ResourceDescriptions>
分享到:
相关推荐
在Java中,有多种库可用于处理XML,如JAXB(Java Architecture for XML Binding),DOM(Document Object Model),SAX(Simple API for XML)等,这些库提供了丰富的API来读写、解析和生成XML数据。 ### 软件调试...
- Java API for XML Binding (JAXB):将XML数据与Java对象模型相互转换。 - Java API for XML Processing (JAXP):处理XML文档。 ##### 2.3 IBM的WebSphere - **概述**:IBM WebSphere是一个全面的企业级中间件...
街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用
轻量级密码算法LBlock的FPGA优化实现.docx
街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用
Git 资料 progit-zh-v2.1.1.pdf
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
篮球计分器FPGA附程序..doc
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
内容概要:本文档全面介绍了Linux开发的基础知识、应用场景、环境搭建、常用命令、Shell脚本编程以及C/C++和Python开发等内容。首先阐述了Linux开发的重要性及其在服务器端开发、嵌入式开发和系统运维等领域的广泛应用。接着详细讲解了如何选择合适的Linux发行版并安装系统,配置开发环境,包括安装必要的开发工具和配置SSH服务。文档还深入讲解了Linux基础命令,如文件和目录操作、文件内容查看与编辑、进程管理和权限管理。此外,介绍了Shell脚本编程的基本语法,包括变量、条件语句、循环语句和函数定义。针对C/C++和Python开发,文档分别讲解了编译器安装、程序编写与编译、调试方法及使用虚拟环境等内容。最后,简要介绍了Linux内核开发的相关知识,包括下载编译内核、内核模块开发等,并推荐了相关学习资源。 适合人群:对Linux开发感兴趣的初学者及有一定经验的研发人员,尤其是希望深入掌握Linux开发技能的开发者。 使用场景及目标:①掌握Linux开发环境的搭建与配置;②熟悉Linux基础命令和Shell脚本编程;③学习C/C++和Python在Linux下的开发流程;④了解Linux内核开发的基本概念和技术。 阅读建议:此文档内容丰富,涵盖面广,建议读者根据自身需求选择性阅读,并结合实际操作进行练习。特别是对于初学者,应先掌握基础命令和开发环境的搭建,再逐步深入到编程语言和内核开发的学习。
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
街道级行政区划shp数据,wgs84坐标系,直接使用。
内容概要:本文档《word练习题.docx》是一份详细的Word操作练习指南,涵盖了从基础到高级的各种功能。文档分为三个主要部分:内容编辑、页面布局和高效文档。内容编辑部分包括文本格式化、段落设置、项目编号、制表位、边框与底纹等练习;页面布局部分涉及分节符、分栏、页眉页脚、水印等设置;高效文档部分则聚焦于样式管理、导航窗格、题注、书签、超级链接、脚注与尾注、交叉引用等功能。每个练习都有具体的操作步骤,帮助用户掌握Word的各种实用技巧。 适合人群:适用于Word初学者及希望提高Word技能的中级用户,尤其是需要频繁使用Word进行文档编辑和排版的办公人员。 使用场景及目标:①帮助用户熟悉Word的基本操作,如文本编辑、格式设置等;②提升用户的文档排版能力,学会设置复杂的页面布局;③提高工作效率,掌握高效文档管理技巧,如样式应用、题注和交叉引用等。 其他说明:此文档不仅提供了具体的练习题目,还附带了详细的步骤说明,用户可以根据指引逐步完成每个练习。此外,文档中的一些练习涉及到智能文档和Office智能客户端的应用,有助于用户了解Word在企业级应用中的潜力。建议用户按照章节顺序逐步学习,实践每一个练习,以达到最佳的学习效果。
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
全球腐败感知数据(2000-2023)——3000行 33个指标 关于数据集 该数据集包含3000行和33列,涵盖了2000年至2023年的腐败感知指数(CPI)数据和各种治理指标。它包括国家排名、分数和其他指标,如公共部门腐败、司法腐败、贿赂指数、商业道德、民主指数、法治、政府效率、经济指标和人类发展指数。 这些数据可用于: 腐败趋势分析 腐败对GDP、人类发展指数和治理的影响 跨国比较 数据可视化和机器学习模型 该数据集对研究人员、数据分析师、政策制定者和对研究全球腐败趋势非常有用。
毕业设计(论文) 基于FPGA的数字频率计设计.doc
街道级行政区划shp数据,wgs84坐标系,直接使用。