2016-11-09 5 views
0

Мой проект с использованием Spring MVC и Spring Data MongoDB для подключения MongoDB базы данных Это мой пример кода:Пользовательские отображение Spring MVC, Spring Data MongoDB

public class Data extends BasicDBObject{ 

    @Id 
    public String id; 
    @Transient 
    public String obName; 

    public String getId() { 
     return id; 
    } 
    public void setId(String id) { 
     this.id = id; 
    } 
    public String getObName() { 
     return obName; 
    } 
    public void setObName(String obName) { 
     this.obName = obName; 
    } 
} 

Пользовательский преобразователь

@ReadingConverter 
public class DataReadConverter implements Converter<BasicDBObject, Data>{ 

    /* (non-Javadoc) 
    * @see org.springframework.core.convert.converter.Converter#convert(java.lang.Object) 
    */ 
    @Override 
    public Data convert(BasicDBObject source) { 
     Data data = new Data(); 
     data.setId((ObjectId) source.get("_id")); 
     data.putAll(source.toMap()); 
     return data; 
    } 


} 

Преобразователь регистра

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:mongo="http://www.springframework.org/schema/data/mongo" 
xsi:schemaLocation="http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://www.springframework.org/schema/data/mongo 
     http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 

<!-- MongoDB Config --> 
<mongo:mongo host="localhost" port="27017" /> 
<mongo:db-factory dbname="opmdrive" mongo-ref="mongo"/> 


<mongo:mapping-converter base-package="com.chick.opm.model.object"> 
    <mongo:custom-converters> 
     <mongo:converter> 
      <bean class="com.chick.opm.spring.DataReadConverter"/> 
     </mongo:converter> 
     <mongo:converter> 
      <bean class="com.chick.opm.spring.DataWriteConverter"/> 
     </mongo:converter> 
    </mongo:custom-converters> 
</mongo:mapping-converter> 

<bean id="mongoOperation" class="org.springframework.data.mongodb.core.MongoTemplate"> 
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /> 
    <constructor-arg name="mongoConverter" ref="mappingConverter"/> 
</bean> 

<bean class="org.springframework.data.mongodb.core.mapping.event.LoggingEventListener"/> 

получить данные и отображение

List<Data> updatedUser = getCurrentMongoOperations().findAll(Data.class, "accounts"); 
System.out.println(updatedUser.get(0).getId().toStringMongod()); 
return updatedUser; 

Фактический результат
Ошибка не может бросить BasicDBObject к данным

Ожидать результат

[ 
    { 
    "id": "5820428b1a82a72dfce0c914", 
    "username": 17671794, 
    "password": "mypassword" 
    }, 
    { 
    "id": "5820428d1a82a72dfce0c915", 
    "username": 81964940, 
    "password": "mypassword" 
    }, 
    { 
    "id": "5822a7e642af5424d0bb07ab", 
    "username": 75165254, 
    "password": "mypassword" 
    } 
] 
+0

Вы можете добавить StackTrace за ошибку? – Veeram

ответ

0

Наконец я нашел решение функция .toMap() перед ответом HashMap лучше так:

Map map = ((HashMap) collectionService.getById(id, dataName)).toMap() 
return map; 
Смежные вопросы