0

InstanceId.value() に typename が 2 回含まれているのは正しいですか?

// gives "typename/...,typename'
public String value(){
    return this.getTypeName() + "/" + this.getCdoIdAsString();  
}

// gives comma-separated persistent values including typename
private String getCdoIdAsString(){
    return ReflectionUtil.reflectiveToString(this.cdoId); 
}

私のカスタムタイプ「StateStructures.Framework」の結果として、Guid MongoRepository.queryForSnapshots() は次の bson-query を受け取ります (そして 0 の結果を返します):

{ "globalId_key" : "StateStructures.Framework/49168d17-60e9-4720-97d2-a6f7928e18b6-0000,StateStructures.Framework"}

最後から「、StateStructures.Framework」を手動で削除すると、mongoは予想される行を返します。

バグのようです: InstanceId.value() で typename を指定し、それを InstanceId.getCdoIdAsString() で再度追加すると、クエリが明らかに正しくなくなります。代わりに、InstanceId.getCdoIdAsString() での永続フィールドの反復中に型名を無視すると、バグが解決するようです。

4

1 に答える 1

0

ドメイン クラス (StateStructures と Framework) を知らずにこの質問に答えることは困難です。私が理解している限りでは、複雑なオブジェクトを ID として使用していますか?

このクラスと、比較されているオブジェクトの詳細も投稿してください。最新の Javars バージョン (1.4.0) を使用していますか?

于 2015-12-28T19:20:15.803 に答える