Cuando trabajamos con Mongodb a la hora de hacer Queries debemos de comprobar el objeto WriteResult resultante para comprobar que la operación se ha realizado correctamente.
WriteResult wr = mongoOperations.updateFirst( new Query(where("id").is("objectId")), new Update().push("favouriteUsers", idUser),Course.class); String error = wr.getError();
Para que no tengmos que hacer esto y si ocurre algún problema se lance una excepcion debemos de configurar Spring Data Mongo Db de la siguiente manera.
<mongo:mongo host="localhost" port="27017" id="mongo"> <mongo:options connections-per-host="8" threads-allowed-to-block-for-connection-multiplier="4" connect-timeout="1000" max-wait-time="1500" auto-connect-retry="true" socket-keep-alive="true" socket-timeout="1500" slave-ok="true" write-number="1" write-timeout="0" write-fsync="true"/> </mongo:mongo> <mongo:repositories base-package="xx.xxxx.xxx"/> <mongo:db-factory dbname="database" mongo-ref="mongo" id="mongoDbFactory"/> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/> <property name="writeResultChecking" value="EXCEPTION"/> <!-- propiedad usada para que si hay error devuelva una excepción y no haya que comprobarlo --> </bean>
La clave está en la propiedad writeResultChecking que puede configurar con los valores NONE, LOG y EXCEPTION que es el caso que nos interesa.
Referencias:
Spring data mongo de documentacion
Ejemplo de configuración
No hay comentarios:
Publicar un comentario