я использую данные 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();
}
}