He estado en esto por unas horas y aún no he encontrado a nadie que lo haya hecho funcionar. Quiero persistir un objeto BigDecimal en Mongo, pero Mongo no es compatible nativamente con BigDecimal. Seguí los documentos de Spring here pero no tuve suerte.¿Cómo configuro los formateadores de Mongo personalizados en Spring?
Según lo que puedo decir, Spring no está inyectando mis clases de convertidor personalizadas en Mongo cuando está escribiendo en el db. Esto es lo que he hecho:
Mi applicationContext-services.xml ...
<!-- Factory bean that creates the Mongo instance -->
<mongo:mongo
host="localhost"
port="1234" />
<mongo:db-factory
dbname="solar"
mongo-ref="mongo"/>
<mongo:mapping-converter>
<mongo:custom-converters>
<mongo:converter>
<bean class="com.mine.BigDecimalReadConverter"/>
</mongo:converter>
<mongo:converter>
<bean class="com.mine..BigDecimalWriteConverter"/>
</mongo:converter>
</mongo:custom-converters>
</mongo:mapping-converter>
<!-- Use this post processor to translate any MongoExceptions thrown in @Repository annotated classes -->
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
<bean id="mongoDbTest"
class="com.mine.MongoDbTest">
<property name="mongoTemplate">
<ref local="mongoTemplate" />
</property>
</bean>
El error que estoy recibiendo es:
java.lang.IllegalArgumentException: Multiple constructors with arguments found in class java.math.BigDecimal! Annotate one with @PreferedConstructor explicitly to select it to be used in persistence operations.
at org.springframework.data.mapping.PreferredConstructorDiscoverer.<init>(PreferredConstructorDiscoverer.java:81)
Miras a las pruebas de unidad en primavera-datos o el módulo que u está utilizando? – chrislovecnm
no tengo. Lo configuré como lo sugieren los documentos, pero no tuve suerte. – emilebaizel
qué versión de los datos de Spring está utilizando ?? –