Solución:
He descubierto cómo solucionar esto.
Cambie el tipo de parámetro a org.bson.types.ObjectId; de String
public List<SomeObject> findByNestedObjectId(ObjectId id);
y cuando lo llames usa
repositoryName.findByNestedObjectId(new ObjectId(theIdString));
Spring-data-mongodb
no convertiría _identificación campo a ObjectId escriba automáticamente en la clase anidada en la operación de consulta. Debería convertirlo manualmente. Por ejemplo:
public List<SomeObject> findByNestedObjectId(String id) {
Query query = Query.query(new Criteria("nestedObject._id", convertToObjectId(id)));
return mongoTemplate.find(query, SomeObject.class);
}
Object convertToObjectId(Object id) {
if (id instanceof String && ObjectId.isValid(id)) {
return new ObjectId(id);
}
return id;
}
Si NestedObject
Se ve como esto:
class NestedObject {
@Id String id;
}
y el String
el valor que ingresa en la consulta es válido ObjectId
la consulta:
findByNestdObjectId(String id);
Deberia trabajar. Si no se siente libre de crear un ticket en JIRA y proporcionar un pequeño caso de prueba para reproducirlo.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)