0

以下は私のドメインクラスです

class Person { 
     String getName(); 
     Vehicle getVehicle(); 
} 

interface Vehicle { 
   String getCompanyName(); 
   String getRegNo(); 
   Point getParkingSpaceRequired(); 
} 

abstract class AbstractVehicle { 
} 

class Motorcycle extends AbstractVehicle { 
} 

class Car extends AbstractVehicle { 
} 

PersonProxyをEntityProxyとして作成するのは簡単で、person.getName()に対して正常に機能していました。

VehicleProxyをValueProxyとして作成し、.with('vehicle')を使用してfire()を呼び出しましたが、エラーが発生します。

ドメインタイプcom....AbstractVehicle $$ EnhancerByCGLIB$$e86549b9をクライアントに送信できません。

PersonProxyでは@ProxyFor(value = Person.class、locator = PersonLocator.class)
を取得しましたVehicleProxyでは@ProxyFor(value = Vehicle.class)を取得しました

では、RequestFactoryでそのような継承を処理する方法は?
VehicleをValueProxyからEntityProxyに変更する必要がありますか?
次に、VehicleLocatorのメソッドを実装する方法は?

4

1 に答える 1

0

interfaceのプロキシインターフェイスの代わりに、のプロキシインターフェイスを作成する必要がMotorocycleあります。私は(クラスではなく)インターフェースにrequestfactoryプロキシインターフェースを使用したことがありません。私の意見では、それがこの例外が発生する理由です。CarVehicle

[編集]
上記のような場合、サーバーとクライアントサイトの両方がそれを見ることができるようVehicleに、インターフェースをパッケージに移動する必要があります。sharedこれは列挙型の場合の非常に一般的な解決策です。ドメインクラスにはいくつかの列挙型プロパティがあり、プロキシインターフェイスにもこのプロパティのアクセサーが含まれている必要があります。

他の解決策(私はうまくいかないかもしれません)は、インターフェース用VehicleのプロキシインターフェースとMotorocycleそれCarを拡張するためのプロキシインターフェースを書くことです。

于 2011-08-08T16:25:12.490 に答える