Registering Converter and not respecting the "contract" to return the correct type is definitively not a solution for me.
We can register converter to/from String like this:
Code:
public class UUIDToStringConverter implements Converter<UUID, String> {
@Override
public String convert(UUID inUUID) {
return inUUID.toString();
}
}
public class UUIDToStringConverter implements Converter<UUID, String> {
@Override
public String convert(UUID inUUID) {
return inUUID.toString().toLowerCase();
}
}
and register them in the context.xml
Code:
<mongo:mapping-converter id="mongoDbConverter">
<mongo:custom-converters>
<mongo:converter>
<bean class="your.package.path.UUIDToStringConverter"/>
</mongo:converter>
<mongo:converter>
<bean class="your.package.path.StringToUUIDConverter"/>
</mongo:converter>
</mongo:custom-converters>
</mongo:mapping-converter>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongoDbFactory" />
<constructor-arg ref="mongoDbConverter" />
</bean>
but the field will then be a String not a Binary, subtype UUID…