将JPA对象标记为Transient但仍在JaxWsProxyFactoryBean中返回

时间:2016-10-21 15:59:23

标签: java jpa jax-ws

我在JPA bean中有一个标记为javax.persistence.transient的字段,以使JPA忽略它(否则在JPA操作期间抛出错误)。这适用于JPA和JAX-WS webservices返回字段确定。但是,如果我使用url和JaxWsProxyFactoryBean接口(使用JaxWsProxyFactoryBean调用webservice),则不会返回标记为transient的字段。这显然必须是因为JaxWsProxyFactoryBean正在使用序列化并由于@Transient而删除它们。

我的问题,有没有办法让JPA忽略它但仍然有JaxWsProxyFactoryBean返回该字段?

示例:

class House {
...
    @Transient
    // JaxWsProxyFactoryBean  clients dont return this due to @Transient
    // when this object is returned in a web service
    private Address address; 
...
}

1 个答案:

答案 0 :(得分:0)

您可以尝试为JPA和WS设置单独的bean,并在两者之间映射服务层(您可以使用ModelMapper来实现映射)。

使用此模式,您可以让JPA bean正确建模持久性,并拥有一个正确建模与客户端交互的WS bean。