`

jaxb 一些体会

阅读更多
看到很多中文的技术文章介绍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>
分享到:
评论

相关推荐

    JAXB的 eclipse插件

    5. **图形化界面设计**:一些高级插件甚至提供了图形化的XML Schema设计工具,帮助开发者直观地构建和修改XML Schema。 6. **调试支持**:在开发过程中,插件可以提供XML和Java对象之间的调试工具,帮助定位和解决...

    JAXB的安装包及插件

    对于IntelliJ IDEA,虽然内置了一些基本的JAXB支持,但也可以安装如"Java2WSDL"这样的插件来增强功能。 **JAXB的基本用法** - **生成Java类**:JAXB提供了一个工具`xjc`,可以将XML Schema文档转换为对应的Java类...

    JAXB2 jaxb-api.jar jaxb-xjc.jar jaxb-impl.jar activation.jar

    JAXB2,全称为Java Architecture for XML Binding 2,是Java平台上的一个标准技术,用于在XML和Java对象之间进行绑定。它允许开发者通过简单的API将XML文档转换为Java对象,反之亦然,大大简化了XML数据处理。JAXB2...

    javax.rar(jaxb-impl-2.3.0、jaxb-core-2.3.0、jaxb-api-2.3.0)

    标题中的"jaxb-impl-2.3.0、jaxb-core-2.3.0、jaxb-api-2.3.0"是JAXB的不同组件版本号,它们在处理XML到Java对象之间的转换时起到关键作用。在描述中提到的“Maven项目中缺少jaxb-api的异常报错”,通常指的是在运行...

    jaxb-api jaxb-impl jar

    `jaxb-api`和`jaxb-impl`是JAXB框架的核心组成部分。这两个JAR文件在处理XML到Java对象的绑定过程中扮演着关键角色。 1. **jaxb-api.jar**: 这个库包含了JAXB API,即Java接口和抽象类,定义了JAXB的工作方式。它...

    jaxb-api-2.1.jar 和 jaxb-impl-2.1.8.jar

    `jaxb-api-2.1.jar` 和 `jaxb-impl-2.1.8.jar` 是Java应用程序中用于XML绑定(Java Architecture for XML Binding,简称JAXB)的重要库文件。JAXB是Java SE和Java EE平台的标准部分,它提供了一种将XML文档与Java...

    jaxb2.3.0依赖jar.rar

    JAXB 2.3.0引入了一些新的特性和改进,包括: 1. **Java SE 9+支持**:JAXB 2.3.0开始支持Java 9及其后续版本,这包括模块化系统(Jigsaw)的集成。 2. **API增强**:可能包含了新的API接口或方法,以提供更丰富的...

    activation.jar jaxb1-impl.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jsr173_1.0

    这些文件是Java编程环境中常用的库文件,主要用于XML绑定(Java Architecture for XML Binding,JAXB)和JavaBeans Activation Framework(JAF)。在Java应用程序开发中,尤其是处理XML数据时,这些库扮演着至关重要...

    jaxb-impl.jar jaxb-api.jar jsr173_1.0_api.jar

    在给定的压缩包文件中,包含了一些核心的JAXB组件以及相关的依赖库,如`jaxb-impl.jar`、`jaxb-api.jar`和`jsr173_1.0_api.jar`,这些都是解决在Maven项目中这些特定jar包缺失问题的关键。 首先,`jaxb-impl.jar`是...

    jaxb api jar

    JAXB 2.1.9 版本修复了一些已知问题,提高了性能,并提供了新的特性。 使用JAXB,开发者首先需要定义Java类来表示XML结构,然后通过JAXB的`@XmlRootElement`和`@XmlElement`等注解来标注这些类,以便JAXB能够理解...

    jaxb-ri-2.2.7

    **JAXB 2.2.7** 版本是JAXB的一个特定发行版,可能包含了对之前版本的一些错误修复、性能优化和新功能。由于没有提供具体的描述,我们可以推测这个版本可能专注于增强稳定性,提高兼容性,以及对Java 6和7的支持。...

    jaxb生成XML例子

    JAXB (Java Architecture for XML Binding) 是 Java 中用于对象到XML以及XML到对象转换的API。它使得开发者能够轻松地将Java对象模型映射到XML文档,并反之亦然。在给定的例子中,我们将深入理解如何使用JAXB注解来...

    android上使用 jaxb所需要的包

    可能需要一些额外的适配工作,例如使用第三方库如RetroLambda来支持Java 8的特性,或者使用其他XML处理库如Gson或Jackson作为替代方案。 总的来说,虽然Android原生不支持JAXB,但通过引入相应的jar包,开发者仍然...

    idea 中用jaxb 读xml中数据

    当我们需要处理XML文件,比如从XML中提取数据时,JAXB(Java Architecture for XML Binding)是一个强大的工具。本教程将详细解释如何在Idea中利用JAXB来读取XML文件中的数据。 JAXB是Java标准API,它提供了将Java...

    JAXB乱码问题解决

    在Java开发中,JAXB(Java Architecture for XML Binding)是一个用于将XML文档和Java对象之间进行绑定的技术。在处理XML文件时,特别是涉及到序列化和反序列化时,可能会遇到字符编码问题,即所谓的“乱码”。这个...

    jaxb-api-2.2 jaxb-impl

    在使用webservice,mule esb等需要jaxb的项目里经常会出现 JAXB 2.0 API is being loaded from the bootstrap classloader这个错误,按照打出的信息Use the endorsed directory mechanism to place jaxb-api.jar in ...

    jaxb-impl.jar包

    例如,`2.1`版本相对于`2.0.3`可能包含了更多的功能改进和兼容性提升,同时可能修复了一些已知的问题。 **使用场景** JAXB在很多领域都有广泛的应用,如: 1. **Web服务**:在SOAP Web服务中,JAXB常用于将Java...

    jaxb-api.jar.jaxws-api.zip_ jaxb-api.jar_cxf_jax-ws.jar_jaxb-api

    标题提到的"jaxb-api.jar.jaxws-api.zip_ jaxb-api.jar_cxf_jax-ws.jar_jaxb-api",是针对这个问题提供的一组支持包。 **JAXB(Java Architecture for XML Binding)** 是Java平台的一个标准,它允许开发者将XML文...

    jaxb (XML操作)

    **JAXB(Java Architecture for XML Binding)** 是Java平台中用于处理XML的一种强大的工具,它提供了将XML文档与Java对象之间的映射,从而方便XML数据的解析和生成。通过JAXB,开发者可以轻松地实现XML数据到Java...

Global site tag (gtag.js) - Google Analytics