Использование GWT с Morphia/MongoDB

Мне было интересно, пытался ли кто-нибудь и успешно использовал банку Morphia для взаимодействия с базой данных mongodb внутри GWT? Я использую приведенный ниже объект в качестве основы для всех своих POJO, однако всякий раз, когда я пытаюсь сохранить объект с помощью UpdateOperations<DerivedPersistentEntity> или datastore.Save(), я получаю ConcurrentModificationException.

package com.greycells.dateone.shared;

import com.google.code.morphia.annotations.Id;
import com.google.code.morphia.annotations.Version;

public class PersistentEntity {

    @Id
    private String id;
    @Version
    private Long version = null;

    public PersistentEntity() {
    }

    public String getId() {
        return id;
    }

    public Long getVersion() {
        return version;
    }

    public void setVersion(Long version) {
        this.version = version;
    } 
}

Я также добавил jar расширения gwt, который вы должны загрузить отдельно для Morphia, и сослался на него в моем gwt.xml, и это, похоже, бесполезно. Кроме того, я попытался изменить поле id PersistentEntity на тип ObjectId, но тогда я даже не могу правильно связать свой проект, потому что он жалуется на...

[ОШИБКА] Нет исходного кода для типа org.bson.types.ObjectId; вы забыли наследовать необходимый модуль?


person hegsie    schedule 13.08.2013    source источник
comment
Вы пытаетесь вызвать datastore.Save() напрямую из клиентского кода GWT? Это, наверное, не сработает. вы должны передать DTO на свой сервер, и там вы должны позвонить datastore.save()   -  person Ümit    schedule 13.08.2013
comment
Нет, я вызываю datastore.save только из кода сервера, хотя это серверы, отличные от тех, которые создали исходный DTO. Но я снова получаю объект из базы данных перед вызовом сохранения.   -  person hegsie    schedule 14.08.2013


Ответы (1)


Вы не можете использовать строку для поля @Id объекта в Morphia, это должен быть ObjectId. Поддержка GWT в Morphia полностью отключена с версии 1.02.

person hegsie    schedule 29.08.2013