jaxb2 名称冲突 问题解决

jaxb2 名称冲突

Tuesday October 7, 2008

前几天在介绍OXMapping的几个框架时提到了jaxb2。jaxb2在使用时比较简单,而且集成在jdk6.0中不需要额外的导入包,所以最后决定在项目中使用用jaxb2框架。

在网上搜索到的jaxb2的中文教程很少,而且内容太过简单,E文的阅读起来不很明白。所以在使用中遇到了点问题,就是“名称的冲突”。

这里说的名称冲突指的是: JavaBean 属性名称与字段名称之间的名称冲突

在pojo类中的setter和getter方法会导致运行报错:

Exception in thread "main" com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:

2 counts of IllegalAnnotationExceptions

这时我们就要用到另一个注释:@XmlTransient,用来防止映射使用@XmlTransient注释的字段或者javabean的属性,从而解决名称冲突。

具体的用法是将@XmlElement和@XmlTransient分别加到javabean属性前和对应的getter方法前:

 

package entity;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

@XmlRootElement //表示student是一个跟元素
public class Student implements Serializable {
@XmlElement //name作为student的一个子元素
private String name;
@XmlElement //gender作为student的一个子元素
private String gender;

public Student() {

}

public Student(String name, String gender) {
this.name = name;
this.gender = gender;
}

@XmlTransient
public String getName() {
return name;
}

@XmlTransient
public String getGender() {
return gender;
}

public void setName(String name) {
this.name = name;
}

public void setGender(String gender) {
this.gender = gender;
}

}

可参考 The Great JAXB API BlunderShould JAXB Word With Fields or Properties? 英文不好,此处不作翻译

转自:http://nophoebe.cn/?p=223

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值