关闭

JAXB "有两个名为 "**" 的属性,类的两个属性具有相同名称 "**""解决方案

5935人阅读 评论(6) 收藏 举报

   用eclipse写JAXB时,发现总是报这样的错。

   

这是为什么呢?

在网上搜索到的jaxb2的中文教程很少,而且内容太过简单,查阅了一些英文的资料,发现问题是“名称的冲突”。
这里说的名称冲突指的是: 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 Blunder 和 Should JAXB Word With Fields or Properties? 英文不好,此处不作翻译

4
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

java实现具有相同属性名称及相似类型的pojo、dto、vo等的互转

已应用于实际项目:1.thrift对象与dto之间的互转                                   &#...
  • w172087242
  • w172087242
  • 2017-05-04 17:25
  • 1514

编译项目时OwinStartup冲突的解决办法

最近在开发项目时,碰到了一个头痛的问题,原本是没有出现这个问题的,个人猜想原因是由于将三个网站的项目,通过一个中间项目引用了后台Manage项目的一个Dll,导致在启动网站项目的时候,会报出如下错误:...
  • pandeng4639088
  • pandeng4639088
  • 2017-04-26 12:18
  • 1428

JAXB "有两个名为 "**" 的属性,类的两个属性具有相同名称 "**""解决方案

用eclipse写JAXB时,发现总是报这样的错。     这是为什么呢? 在网上搜索到的jaxb2的中文教程很少,而且内容太过简单,查阅了一些英文的资料,发现问题是“名称的冲突”。 这里说的名称冲突...
  • qq_33394088
  • qq_33394088
  • 2017-05-28 09:40
  • 1003

利用java反射实现两个具有相同属性bean赋值

package com.dobn.bdgcgl.utils; import java.lang.reflect.Field; import java.lang.reflect.Method; ...
  • linlinv3
  • linlinv3
  • 2014-07-15 13:39
  • 6739

利用java反射实现两个具有相同属性bean赋值

利用java反射实现两个具有相同属性bean赋值
  • educast
  • educast
  • 2015-11-04 10:02
  • 2125

BeanUtils的使用-在具有很多相同属性的两个bean之间复制属性值

import org.springframework.beans.BeanUtils; 注意事项: 在使用时一定要用import org.springframework.beans.Bea...
  • muyuxuebao
  • muyuxuebao
  • 2016-03-28 16:54
  • 711

【反射机制】两个类名不同但其属性相同的对象,如何将一个对象的值赋给另外一个对象

最近公司需要用线程迁移一张表(业务表)的数据至另外一张表(备份表)中,两张表的字段一样,如何在程序中将查到的业务表数据集合转换到另外一个备份表数据集合中。 最初的想法,是新建一个一个的去赋值,但是这种...
  • jtcao
  • jtcao
  • 2017-12-14 09:14
  • 30

webx工程tomcat启动报错 ( 方案不能包含具有相同名称的两个全局组件; 而此方案中包含两个)

webx工程tomcat启动报错 2012-06-15, 15:09 UTC, #1 jql294671405   ...
  • xiaojie19871116
  • xiaojie19871116
  • 2015-07-08 12:11
  • 1314

MyBatis--解决字段名与实体类属性名不相同的冲突--源代码

  • 2016-08-02 16:20
  • 2.04MB
  • 下载

java 对象比较 判断两个对象的某些或某个属性相同 这对象相等。

知识点:重写equals()方法 首先来看一些文字性的东西: 一、简单类型比较 Java中,比较简单类型变量用“==”,只要两个简单类型值相等即返回ture,否则返回false; ...
  • zwfwgood
  • zwfwgood
  • 2013-07-08 14:58
  • 2375
    个人资料
    • 访问:254351次
    • 积分:5472
    • 等级:
    • 排名:第5709名
    • 原创:324篇
    • 转载:70篇
    • 译文:1篇
    • 评论:33条
    博客专栏
    leetcode

    文章:234篇

    阅读:38346
    文章分类