Tôi đang cố gắng sử dụng bộ chuyển đổi tùy chỉnh với spring-data-mongodb. Tôi muốn tạo ra nó lập trình, nhưng tôi nhận được lỗi sau:Đặt bộ chuyển đổi MongoDb theo chương trình
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type org.joda.time.LocalDate to type java.lang.String
at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:475)
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:175)
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:154)
....
....
Sau đây là đoạn mã thất bại:
Mongo mongo = new Mongo();
MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongo, "database");
List<Converter> converters = new ArrayList<>();
converters.add(new LocalDateWriteConverter());
converters.add(new LocalDateReadConverter());
CustomConversions customConversions = new CustomConversions(converters);
MappingContext mappingContext = new SimpleMongoMappingContext();
MappingMongoConverter mappingMongoConverter = new MappingMongoConverter(mongoDbFactory, mappingContext);
mappingMongoConverter.setCustomConversions(customConversions);
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory, mappingMongoConverter);
MongoDbEvent mongoEvent = new MongoDbEvent(new LocalDate(2012, 12, 8));
mongoTemplate.insert(mongoEvent);
Và đây là lớp học chuyển đổi của tôi:
class LocalDateReadConverter implements Converter<String, LocalDate> {
@Override
public LocalDate convert(String s) {
// Conversion code omitted.
}
}
class LocalDateWriteConverter implements Converter<LocalDate, String> {
@Override
public String convert(LocalDate localDate) {
// Conversion code omitted.
}
}
Lớp tôi đang cố gắng tồn tại trông như sau:
import org.joda.time.LocalDate;
public class MongoDbEvent {
private String id;
private LocalDate date;
public MongoDbEvent(LocalDate date) {
this.date = date;
}
public String getId() {
return id;
}
public LocalDate getDate() {
return date;
}
@Override
public String toString() {
return "MongoDbEvent{" +
"id='" + id + '\'' +
", date=" + date +
'}';
}
}
cuối cùng tôi nhận được xung quanh để kiểm tra điều này, và nó làm việc hoàn hảo. Cảm ơn nhiều! – Daniel
Cảm ơn bạn rất nhiều! Khi tôi thấy '.afterPropertiesSet();' trong các bài kiểm tra đơn vị của dữ liệu mùa xuân, tôi đã không chú ý đủ đến nó ... – Zarathustra
Điều này thực sự giúp tôi tiết kiệm thời gian, cảm ơn! : D – ArcanisCz