2016-10-21 8 views
0

JPA beanをjavax.persistence.transientとしてマークして、JPAが無視するようにしました。そうでなければ、JPA操作中にエラーをスローします。これはJPAとJAX-WSのWebサービスで正常に動作し、okフィールドが返されます。しかし、JaxWsProxyFactoryBean(JaxWsProxyFactoryBeanを使用してJava呼び出しWebサービス)とurlおよびinterfaceを使用すると、一時的なマークが付けられたフィールドは返されません。これは明らかにJaxWsProxyFactoryBeanが@Transientのために直列化を使用しているためです。JPAオブジェクトをTransientとしてマークしますが、まだJaxWsProxyFactoryBeanに返します。

私の質問ですが、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; 
... 
} 

答えて

0

次の2つの(あなたがマッピングをfaciliateするModelMapperを使用することができます)との間でマップするサービス層で、JPA用およびWSのための独立した豆を持ってしようとすることができます。

このパターンを使用すると、JPA Beanに永続性を正しくモデル化させ、クライアントとの対話を正しくモデル化したWS Beanを作成できます。

+0

データベース用に別のBeanを作成しようとしましたが、コードが実際には醜くなり、メモリ(x2)とバグが大幅に増加しました。代わりに、私は新しいWebサービスメソッドを用意して、クライアントに呼び出して元の呼び出しの後にこれらの値を設定させます。理想的ではないが、それを処理する唯一の方法。 (私もreadObject、writeObjectをオーバーライドしようとしましたが、cxfクライアントはそれを呼び出さないので、どちらもうまくいきませんでした) – user18896654353

関連する問題