2012-03-26 3 views
0

класса существует, что я не имею никакого контроля над:Как я могу использовать Morphia для сопоставления не аннотированного pojo?

public class MyPerson { 
    private String name; 
    private int elevation; 

    // getters and setters 
} 

Я хочу упорствовать этот человек в Монго, но я не могу изменить это определение класса с @Entity и другими аннотациями.

Я хотел бы документ в Монго, чтобы посмотреть что-то похожее на:

{ name : "You", elevation : 65 } 

Что лучший способ приблизиться к этому? Конвертер? Расширенный класс? Содержащий класс?

ответ

0

Самый простой способ - просто вставить его в один из них, который вы можете контролировать, и можете включить @Id.

0

Должен работать:

morhpia.map(MyPerson.class); 
Datastore ds = morhpia.createDatastore(mongo, "my_database"); 
MyPerson pe = new MyPerson(); 
pe.setName("cmonkey"); 
ds.save(pe); 

НО Вы должны добавить @Id поле в POJO. Его требуется Морфия.

+0

Увы, поскольку я не могу добавить аннотацию и поле '@ Id' напрямую, это не может быть решением для меня. – cmonkey

+0

Вы можете попытаться использовать Reflection, чтобы добавить эту аннотацию. Или лучше - используйте класс-оболочку с полем @Id – vacuum

+0

Я думаю, что если вы расширите класс, то пометьте подкласс как '@ Entity' и добавьте поле' @ Id', он должен сохранить поля из суперкласса. Класс MyPerson определенно не является окончательным - тогда вы застряли. –