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() での永続フィールドの反復中に型名を無視すると、バグが解決するようです。