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