/** * Converts the given raw id value into either {@link ObjectId} or {@link String}. * * @param id * @return * @since 2.2 */ @Nullable public Object convertId(@Nullable Object id) { return convertId(id, ObjectId.class); }
protected void writeInternal(@Nullable Object obj, Bson bson, @Nullable MongoPersistentEntity<?> entity) { if (obj == null) { return; } if (null == entity) { throw new MappingException("No mapping metadata found for entity of type " + obj.getClass().getName()); } PersistentPropertyAccessor<?> accessor = entity.getPropertyAccessor(obj); DocumentAccessor dbObjectAccessor = new DocumentAccessor(bson); MongoPersistentProperty idProperty = entity.getIdProperty(); if (idProperty != null && !dbObjectAccessor.hasValue(idProperty)) { Object value = idMapper.convertId(accessor.getProperty(idProperty), idProperty.getFieldType()); if (value != null) { dbObjectAccessor.put(idProperty, value); } } writeProperties(bson, entity, accessor, dbObjectAccessor, idProperty); }
protected DBRef createDBRef(Object target, MongoPersistentProperty property) { Assert.notNull(target, "Target object must not be null!"); if (target instanceof DBRef) { return (DBRef) target; } MongoPersistentEntity<?> targetEntity = mappingContext.getPersistentEntity(target.getClass()); targetEntity = targetEntity != null ? targetEntity : mappingContext.getPersistentEntity(property); if (null == targetEntity) { throw new MappingException("No mapping metadata found for " + target.getClass()); } MongoPersistentEntity<?> entity = targetEntity; MongoPersistentProperty idProperty = entity.getIdProperty(); if (idProperty != null) { Object id = target.getClass().equals(idProperty.getType()) ? target : entity.getPropertyAccessor(target).getProperty(idProperty); if (null == id) { throw new MappingException("Cannot create a reference to an object with a NULL id."); } return dbRefResolver.createDbRef(property == null ? null : property.getDBRef(), entity, idMapper.convertId(id, idProperty != null ? idProperty.getFieldType() : ObjectId.class)); } throw new MappingException("No id property found on class " + entity.getType()); }
List<Object> ids = new ArrayList<Object>(); for (Object id : (Iterable<?>) valueDbo.get(inKey)) { ids.add(convertId(id, getIdTypeForField(documentField))); resultDbo.put("$ne", convertId(valueDbo.get("$ne"), getIdTypeForField(documentField))); } else { return getMappedObject(resultDbo, Optional.empty()); List<Object> ids = new ArrayList<Object>(); for (Object id : (Iterable<?>) valueDbo.get(inKey)) { ids.add(convertId(id, getIdTypeForField(documentField))); resultDbo.put("$ne", convertId(valueDbo.get("$ne"), getIdTypeForField(documentField))); } else { return getMappedObject(resultDbo, Optional.empty()); return convertId(value, getIdTypeForField(documentField));
Object id = convertId(ref.getId(), property != null && property.isIdProperty() ? property.getFieldType() : ObjectId.class);
/** * Convert a given, already known to be an {@literal id} or even a nested document id, value into the according id * representation following the conversion rules of {@link QueryMapper#convertId(Object)}. * * @param key the property path to the given value. * @param idValue the raw {@literal id} value. * @return the {@literal id} representation in the required format. */ private Document convertId(String key, Object idValue) { Object convertedId = mapper.convertId(idValue); return mapper.getMappedObject(super.asDocument(key, convertedId), Optional.empty()); }
protected void writeInternal(@Nullable Object obj, Bson bson, @Nullable MongoPersistentEntity<?> entity) { if (obj == null) { return; } if (null == entity) { throw new MappingException("No mapping metadata found for entity of type " + obj.getClass().getName()); } PersistentPropertyAccessor<?> accessor = entity.getPropertyAccessor(obj); DocumentAccessor dbObjectAccessor = new DocumentAccessor(bson); MongoPersistentProperty idProperty = entity.getIdProperty(); if (idProperty != null && !dbObjectAccessor.hasValue(idProperty)) { Object value = idMapper.convertId(accessor.getProperty(idProperty)); if (value != null) { dbObjectAccessor.put(idProperty, value); } } writeProperties(bson, entity, accessor, dbObjectAccessor, idProperty); }
protected DBRef createDBRef(Object target, MongoPersistentProperty property) { Assert.notNull(target, "Target object must not be null!"); if (target instanceof DBRef) { return (DBRef) target; } MongoPersistentEntity<?> targetEntity = mappingContext.getPersistentEntity(target.getClass()); targetEntity = targetEntity != null ? targetEntity : mappingContext.getPersistentEntity(property); if (null == targetEntity) { throw new MappingException("No mapping metadata found for " + target.getClass()); } MongoPersistentEntity<?> entity = targetEntity; MongoPersistentProperty idProperty = entity.getIdProperty(); if (idProperty != null) { Object id = target.getClass().equals(idProperty.getType()) ? target : entity.getPropertyAccessor(target).getProperty(idProperty); if (null == id) { throw new MappingException("Cannot create a reference to an object with a NULL id."); } return dbRefResolver.createDbRef(property == null ? null : property.getDBRef(), entity, idMapper.convertId(id)); } throw new MappingException("No id property found on class " + entity.getType()); }
List<Object> ids = new ArrayList<Object>(); for (Object id : (Iterable<?>) valueDbo.get(inKey)) { ids.add(convertId(id)); resultDbo.put("$ne", convertId(valueDbo.get("$ne"))); } else { return getMappedObject(resultDbo, Optional.empty()); List<Object> ids = new ArrayList<Object>(); for (Object id : (Iterable<?>) valueDbo.get(inKey)) { ids.add(convertId(id)); resultDbo.put("$ne", convertId(valueDbo.get("$ne"))); } else { return getMappedObject(resultDbo, Optional.empty()); return convertId(value);
return new DBRef(ref.getCollectionName(), convertId(ref.getId()));