0
私はPOJOを持っています。私はmongoDBにspringデータmongodbを使っていくつかのフィールドを追加して保存します。このために、私はカスタムコンバータを作成しました。しかし、このカスタムカスタムコンバーターは呼び出さず、カスタムコンバーターごとに保存しません。ここで私にSpringデータmongoカスタムコンバータが呼び出し中でなく、保存していません
を助けてくださいMongoDbConfigurationクラス:ここ
@Configuration
@EnableMongoRepositories(basePackages = { "com.db.sample" })
@ComponentScan(basePackages = "com.db.sample")
public class MongoDbConfiguration extends AbstractMongoConfiguration {
@Override
protected String getDatabaseName() {
return "test";
}
@Override
public Mongo mongo() throws Exception {
return new MongoClient("127.0.0.1", 27017);
}
@Override
public CustomConversions customConversions() {
List<Converter<?, ?>> converterList = new ArrayList<Converter<?, ?>>();
converterList.add(new SampleEventWriterConverter());
return new CustomConversions(converterList);
}
@Override
public String getMappingBasePackage() {
return "com.db.sample";
}
@Bean
public MongoTemplate mongoTemplate() throws Exception {
MongoTemplate mongoTemplate = new MongoTemplate(mongo(), "test");
MappingMongoConverter mongoMapping = (MappingMongoConverter) mongoTemplate.getConverter();
mongoMapping.setCustomConversions(customConversions());
mongoMapping.afterPropertiesSet();
return mongoTemplate;
}
}
SampleEventWriterConverterクラス:
@Component
public class SampleEventWriterConverter implements Converter<SampleEvent, Document> {
@Override
public Document convert(SampleEvent event) {
Document doc = new Document();
doc.put("_id", event.getId());
// …
doc.put("sample", "test");
for (Map.Entry<String, Object> entry : event.getFields().entrySet()) {
doc.put(entry.getKey(), entry.getValue());
}
return doc;
}
}
ここにリポジトリクラス:ここ
@Repository
public interface SampleEventRepository extends MongoRepository<SampleEvent, ObjectId> {
}
POJOクラス:
@Document(collection = "sample_event")
public class SampleEvent implements Serializable{
@Id
private ObjectId id;
private Map<String, Object> fields = new HashMap<String, Object>();
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
@JsonAnyGetter
public Map<String, Object> any() {
return fields;
}
@JsonAnySetter
public void set(String name, Object value) {
fields.put(name, value);
}
public void setFields(Map<String, Object> obj) {
fields = obj;
}
public Map<String, Object> getFields() {
return fields;
}
}
私のメインクラス:これは以下のようにDBObjectをSampleEvent &にSampleEvent &文書からのコンバーターの種類を変更した後に取り組んでいる
@Autowired
private SampleEventRepository sampleEventRepository;
SampleEvent sampleEvent = new SampleEvent();
sampleEvent.setUniqueId("1.1.1.1");
sampleEvent.setFields(mapObj);
...
sampleEventRepository.save(sampleEvent);