エンティティの一意のインクリメント ID を生成しようとしています。その目的のために、すべてのエンティティ タイプに対して複数の ApplicationListeners を次のように登録しました。
public class Neo4JCustomerSaveListener implements ApplicationListener<BeforeSaveEvent<Customer>> {
public void onApplicationEvent(BeforeSaveEvent<Customer> event) {
...
}
}
定義は次のようなものです:
<!-- Listeners -->
<bean id="customerSaveListener" class="c.b.listener.Neo4JCustomerSaveListener" />
<bean id="employeeSaveListener" class="c.b.listener.Neo4JEmployeeSaveListener" />
<bean id="messageSaveListener" class="c.b.listener.Neo4JMessageSaveListener" />
ご覧のとおり、型BeforeSaveEvent
でパラメータ化されていCustomer
ます。ただし、保存イベントが顧客に対して発生しようとすると、他のリスナーもトリガーされますが、これらのリスナーはorBeforeSaveEvent
などのさまざまなタイプでパラメーター化されています(同じ親クラスから継承している間)Employee
Message
Entity
これは予想されることですか?そして、この問題に対する私のアプローチはどうあるべきですか? 最初に頭に浮かぶのは、リスナーを 1 つだけ使用して内部をinstanceOf
if
s で区別することですが、これは非常に見苦しく思えます。
私はneo4j 1.9.M03、spring-data-neo4j 2.1.0.RC4、およびspring 3.1.3を使用しています