Morphia: получить документ MongoDb как объект java - PullRequest
0 голосов
/ 12 марта 2020

Я могу легко вставить объект java в базу данных MongoDb с помощью Morphia. Теперь я хочу получить документ и отобразить его как java объект. Документ MongoDB выглядит следующим образом:

{
    "Name":"XXX",
    "Fingertemplate":{ "immutable" : { "size" : { "x" : 388 , "y" : 374} , "minutiae" : [ ........

Мой пример кода показан ниже:

@Entity(value="fingertable", noClassnameStored=true)
public class RecordFingerTemplate {
    @Id private ObjectId id;
    @Property private String name;
    @Embedded private FingerprintTemplate fingertemp;
    public RecordFingerTemplate (){

    }
    public RecordFingerTemplate(String name)
    {
        this.name=name;
    }
    public ObjectId getId() {
        return id;
    }

    protected void setId( final ObjectId id ) {
        this.id = id;
    }
    public FingerprintTemplate getTemplate(){
        return fingertemp;
    }
    public void setTemplate(FingerprintTemplate template){
        this.fingertemp=fingertemp;
    }
}

и для сохранения объекта в базу данных, которую я использую datastore.save(Object), он работает Теперь я хочу получить документ и получить объект шаблона отпечатка пальца.

List<RecordFingerTemplate> result=datastore.createQuery(RecordFingerTemplate.class)
                .field("name").containsIgnoreCase("john")
                .order("name")
                .asList();

Ошибка: ** org.mongodb.morphia.mapping.MappingException: ошибка установки значения из конвертера (PassthroughConverter) для ImmutableTemplate.size to {"x": 388, "y ......... **

1 Ответ

0 голосов
/ 08 мая 2020

Попробуйте переместить / добавить аннотацию @Embedded к FingerprintTemplate и явно вызывать map() для ваших типов. В ленивом отображении есть некоторые пробелы, и я боюсь, что вы можете проскользнуть через такой случай.

...