Это можно сделать, написав свои собственные преобразователи.
В своем вопросе вы указываете, что весенние данные mongodb сохраняются оба, поля и геттеры. Насколько мне известно, сохраняются только поля. (См. 11.1 в документе: http://docs.spring.io/spring-data/mongodb/docs/1.6.3.RELEASE/reference/html/#mapping-conventions (1.6.3 — версия, поставляемая spring-boot 1.2 .6, но он же и в старых версиях и в 1.8.0))
или короткий пример:
Если у вас есть Pojo, как это:
@Document
public class MyClass
{
private ObjectId id;
private String foo = "foo";
public String getBar()
{
return "bar";
}
}
и такой репозиторий:
public interface MyClassRepository extends MongoRepository<MyClass,ObjectId>
{
}
и такой код приложения:
public static void main(String[] args) throws UnknownHostException
{
ApplicationContext ctx = SpringApplication.run(NewClass.class, args);
MongoTemplate mongoTemplate = ctx.getBean(MongoTemplate.class);
MyClass myClass = new MyClass();
mongoTemplate.save(myClass);
MyClassRepository myClassRepository = ctx.getBean(MyClassRepository.class);
myClassRepository.save(myClass);
}
следующий документ сохраняется (один раз по шаблону, а затем снова по репозиторию):
{
"_id" : ObjectId("560b97edcb60110890ab7119"),
"_class" : "sandbox.MyClass",
"foo" : "foo"
}
Таким образом, геттер не использовался для преобразования объекта MyClass.
В той же документации, что и выше, показано, как написать собственный конвертер и как зарегистрировать его в шаблоне MongoTemplate (раздел 8.10). Вы можете написать здесь некоторый код, который использует объявленные геттеры вашего класса и сопоставляет их с полями вашего документа.
person
Konrad Lötzsch
schedule
30.09.2015