同一类中的JPA和JAXB注释导致com.sun.xml.bind.v2.runtime.IllegalAnnotationsException

同一类中的JPA和JAXB注释导致com.sun.xml.bind.v2.runtime.IllegalAnnotationsException,jpa,jaxb,annotations,Jpa,Jaxb,Annotations,我有两个类:Person和PersonAdapter。Person是从wsdl生成的,不能更改 @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "Person") public class Person { @XmlAttribute(name = "name") protected String name; // getters and setters } PersonalAdapter是Person的对

我有两个类:Person和PersonAdapter。Person是从wsdl生成的,不能更改

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Person")
public class Person {

    @XmlAttribute(name = "name")
    protected String name;

    // getters and setters
}
PersonalAdapter是Person的对象适配器,具有一些附加属性。此类的对象提供给我的服务的客户端。我将所有JPA和JAXB注释添加到PersonalAdapter类中,因为我无法更改Person类

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Person")
@Entity
@Table(name = "T_PERSON")
public class PersonAdapter {

    private final Person person;

    @XmlAttribute(name = "description")
    private String description;

    @XmlAttribute(name = "name", required = true)
    @Column(name = "C_NAME")
    public String getName() {
        return person.getName();
    }

    @Column(name = "C_DESCRIPTION")
    public String getDescription() {
        return description;
    }

    // getters, setters, contructors
}
我不能注释name属性,因为它在Person类中,所以我用JAXB和JPA注释来注释getName方法。但在同一方法/属性上使用这些注释会导致IllegalAnnotationsException:

Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 14 counts of IllegalAnnotationExceptions 原因:com.sun.xml.bind.v2.runtime.illegalannotations异常:14次illegalannotationException计数
有可能解决这个问题吗?

已解决!JPA和JAXB注释之间没有冲突。问题在于JAXB上下文的冲突:
@xmlacessortype(xmlacesstype.FIELD)
上的
PersonalAdapter
Person
的公共getter提供了从其他上下文访问我的服务的JAXB上下文到Person对象的权限。Person类在我的上下文中是未知的。我用
xmlacesstype.NONE
替换
xmlacesstype.FIELD
解决了这个问题。也可以使用
@xmltransive
完成