2011-10-10 52 views

回答

10

根据@tomasz-nurkiewicz评论我应该使用@XmlTransient注释。但正如文件指出

默认情况下,如果一个类@XmlAccessorType不存在,并没有它的超类的标注有@XmlAccessorType,则假定在类以下默认:

@ XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)

XmlAccessType.PUBLIC_MEMBER意味着:

每一个公共的getter/setter对每PU blic字段将自动绑定到XML,除非由XmlTransient注释。只有在通过适当的JAXB注释明确注释的情况下,私有,受保护或默认为仅包访问的字段或getter/setter对才绑定到XML。

所以这就是为什么@XmlTransient私人领域不适用于Tomasz Nurkiewicz的例子。有两种可能的方式来解决这个问题:

1)添加注释到公共的getter:

private String password; 

@XmlTransient 
public String getPassword() { 
    return password; 
} 

2)添加@XmlAccessorType类:http://old.nabble.com/@XmlTransient-ignored-td7406659.html

4

我假设您使用JAXB进行对象 - XML映射。在这种情况下,只需使用@XmlTransient注释要在数据库实体中跳过的字段即可。

@XmlTransient 
private String password; 

但是请注意,有一天你会发现你确实需要临时类主要是从后端解耦CXF Web服务。毕竟你不想记得所有在数据库中添加一列的时间立即打破了SOAP接口...

+0

我:

@XmlAccessorType(XmlAccessType.FIELD) public User { @XmlTransient private String password; } 

在找到'我不确定我使用了什么,因为我只在'pom.xml'中添加了'cxf-rt-frontend-jaxws'和'cxf-rt-transports-http'来使用CXF。但是我在我的WAR包中看到'jaxb-impl-2.1.13.jar'和'cxf-rt-databinding-jaxb-2.4.3.jar',看起来你是对的。我尝试使用'@ XmlTransient'没有运气:(我也为整个班级添加了@ @ XmlRootElement',但没有任何变化。你有另一个提示吗? –

+0

你好!我使用Google搜索并做了一些小小的研究,发现如何解决我的问题看到我的最新消息,我也赞成你的回答,因为它能帮助我找到正确的解决方案,谢谢! –

相关问题