Riakエンティティである基本クラスと、BaseEntityを拡張するいくつかの派生クラスがあります。BaseEntityには、@RiakKeyとして注釈が付けられたIdentifierという名前のフィールドがあります。
しかし、どうやらこれは十分ではありません。各派生クラスに@RuiakKey注釈を付けたIdentifierフィールドが必要なようです。そうでない場合、次の例外が発生します。
com.bat.cso.omss.datastore.riak.controllers.RiakBaseController.isEntityExistのcom.basho.riak.client.bucket.DefaultBucket.fetch(DefaultBucket.java:535)のcom.basho.riak.client.convert.NoKeySpecifedException (RiakBaseController.java:130)at com.att.cso.omss.datastore.riak.controllers.RiakBaseController.createEntity(RiakBaseController.java:94)at com.att.cso.omss.datastore.riak.controllers.RiakBaseController.createServiceProvider (RiakBaseController.java:234)at com.att.cso.omss.datastore.riak.App.serviceProviderTests(App.java:62)at com.att.cso.omss.datastore.riak.App.main(App.java :38)
したがって、私の現在の実装は次のようになります(識別子フィールドの複製):
パブリッククラスBaseEntity{
@RiakKey @JsonProperty( "Id")保護された文字列識別子。
public String getIdentifier() {
return identifier;
}
public void setIdentifier(String identifier) {
this.identifier = identifier;
}
。。。
パブリッククラスServiceはBaseEntity{を拡張します
@RiakKey
@JsonProperty("Id")
protected String identifier;
public String getIdentifier() {
return identifier;
}
public void setIdentifier(String identifier) {
this.identifier = identifier;
}
この重複を回避する方法はありますか?