ошибка Spring данных mongodb на CurrentBSONType - PullRequest
0 голосов
/ 01 августа 2020

я использую данные Spring mon go 2.2.1

это мой документ рабочего пространства в mongodb:

{
    "type" : "RDBMS",
    "databases" : [ 
        {
            "ip" : "10.100.0.190",
            "port" : "1521",
            "sid" : "bidb",
            "username" : "dev",
            "password" : "U2FsdGVkX18YslvyCFHRkINjM5cyQSBb20Y5ZKBPKmU=",
            "tableName" : "",
            "type" : "Oracle",
            "name" : "aml",
            "shape" : "database"
        }
    ],
    "creatorUsername" : "amir",
    "sharedUsers" : [ 
        "amir"
    ]
}

Мне нужны все рабочие пространства, создателем или общими пользователями которых является я (amir ). когда я выполняю этот запрос в понедельник go все в порядке

db.getCollection('workspace').find({$or:[{'creatorUsername':'amir'},{'sharedUsers':{$in:['amir']}}]},{'databases':1})

, но когда я использую это в репозитории mongodb, я получаю сообщение об ошибке:

    @Query(value = "$or:[{'creatorUsername':?0},{'sharedUsers':{$in:?0}}]", fields = "{'databases':1}")
    Set<Workspace.WorkspaceDataBaseProjection> findDataBasesByCreatorUsername(String username);

сообщение об ошибке:

org.bson.BsonInvalidOperationException: readStartDocument can only be called when CurrentBSONType is DOCUMENT, not when CurrentBSONType is STRING.
    at org.bson.AbstractBsonReader.verifyBSONType(AbstractBsonReader.java:690)
    at org.bson.AbstractBsonReader.checkPreconditions(AbstractBsonReader.java:722)
    at org.bson.AbstractBsonReader.readStartDocument(AbstractBsonReader.java:450)
    at org.springframework.data.mongodb.util.json.ParameterBindingDocumentCodec.decode(ParameterBindingDocumentCodec.java:192)
    at org.springframework.data.mongodb.util.json.ParameterBindingDocumentCodec.decode(ParameterBindingDocumentCodec.java:175)
    at org.springframework.data.mongodb.repository.query.StringBasedMongoQuery.createQuery(StringBasedMongoQuery.java:121)
    at org.springframework.data.mongodb.repository.query.AbstractMongoQuery.doExecute(AbstractMongoQuery.java:116)
    at org.springframework.data.mongodb.repository.query.AbstractMongoQuery.execute(AbstractMongoQuery.java:101)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:618)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:605)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
    at com.sun.proxy.$Proxy168.findDataBasesByCreatorUsername(Unknown Source)
    at ir.dotin.bi.apps.asha.workspace.WorkspaceService.loadDatabasesByUsername(WorkspaceService.java:129)
    

что не так?

ОБНОВЛЕНИЕ:

рабочая область. java

public class Workspace extends AuditDocument{

    @NotNull
    private String name;
    private List<DataBaseShape> databases;
    private List<String> sharedUsers;

//getter and setter 

    public interface WorkspaceDataBaseProjection {
        List<DataBaseShape> getDatabases();
    }
}
...