2014-11-08 2 views
4

У меня возникают проблемы с получением ответа JSON от mongo db с использованием шаблона mongo с пружинными данными. Вместо получения идентификатора объекта документа ответ приходит с отметкой времени. Ниже приводится JSON полезной нагрузки сохраняется в Монго дб:Spring data mongo template возвращает timestamp вместо простого объекта id

{ 
    "_id" : ObjectId("5457d80a59b6460a50f6cef1"), 
    "menuId" : 123, 
    "menuItemId" : 723, 
    "lastUpdatedDate" : "2014-10-25T20:10:10+0000", 
    "menuItemJson" : { 

     .... 

    } 
} 

Ниже мой ответ JSON приходит из Монго DB:

{ 
    "id": { 
     "time": 1415043082000, 
     "date": 1415043082000, 
     "timeSecond": 1415043082, 
     "inc": 1358352113, 
     "machine": 1505117706, 
     "new": false, 
     "timestamp": 1415043082 
    }, 
    "menuId": 123, 
    "menuItemId": 723, 
    "lastUpdatedDate": "2014-10-25T20:10:10+0000", 
    "menuItemJson": { 

       ...... 

      } 
    } 

И следующий мой класс Java POJO, который отображается с помощью пружины HTTP сообщение конвертор:

import org.bson.types.ObjectId; 
import org.springframework.data.annotation.Id; 
import org.springframework.data.mongodb.core.mapping.Document; 

    @Document(collection = "MenuItem") 
    public class MenuItemJsonCollection { 

     @Id 
     private ObjectId id; 
     private Integer menuId; 
     private Integer menuItemId; 

     .... 

     } 

Ниже мой метод дао, чтобы получить коллекцию:

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.data.mongodb.core.MongoTemplate; 
import org.springframework.stereotype.Repository; 
import org.springframework.data.mongodb.core.MongoTemplate; 
import org.springframework.data.mongodb.core.query.Criteria; 
import org.springframework.data.mongodb.core.query.Query; 

@Repository 
public class MenuDaoImpl implements MenuDao { 

    @Autowired 
    private MongoTemplate mongoMenuOrderingTemplate; 

    @Override 
     public MenuItemJsonCollection fetchMenuItemById(Long menuItemId) { 

      Query query = new Query(); 
      query.addCriteria(Criteria.where("id").is(menuItemId)); 

      return mongoMenuOrderingTemplate.findOne(query, MenuItemJsonCollection.class, "MenuDb"); 
     } 
} 

И Ниже остальные метод конечных точек в контроллере:

@Controller 
public class MenuOrderController { 

    @Autowired 
    private MenuOrderService menuOrderService; 
@RequestMapping(method = RequestMethod.GET, value = "/menuitems/{id}", produces = "application/json") 
    public ResponseEntity<MenuItemJsonCollection> getMenuItemByMenu(
      @PathVariable("id") String menuItemId, 
      @RequestParam(value = "lastupdatedatetime", required = false) String lastUpdateDateTimeString) { 

     Long menuItemID = null; 

     try{ 
      menuItemID = Long.parseLong(menuItemId); 
     }catch(Exception exe){ 
      throw new ClassifiedsBadRequestException(ErrorMapping.INVALID_PAYLOAD.getErrorCode()); 
     } 

     if (!ParamValidationUtil.validateNotNullOrEmptyParams(menuItemId)) { 
      throw new ClassifiedsBadRequestException(ErrorMapping.MISSING_FIELD.getErrorCode()); 
     } else{ 
      MenuItemJsonCollection menuItem = menuOrderService.fetchMenuItemById(menuItemID, lastUpdateDateTimeString); 

      if (menuItem == null) { 
       return new ResponseEntity<>(HttpStatus.NO_CONTENT); 
      } 

      return new ResponseEntity<>(menuItem, HttpStatus.OK); 

     } 
    } 
} 

Что я должен сделать, чтобы напечатать только идентификатор, а не отправлять ответ с полной меткой времени?

i.e «id»: «5457d80a59b6460a50f6cef1», а не целая временная метка.

Заранее спасибо.

+0

Что вы используете для «печати» ответ? Поделитесь используемым кодом, чтобы найти и распечатать результат. – helmy

+0

@helmy Я добавил метод контроллера, а также метод dao для извлечения документа и отправки его в качестве объекта ответа –

ответ

Смежные вопросы