Как использовать Morphia с Java / GWT - PullRequest
4 голосов
/ 12 июля 2011

Я пытаюсь использовать MongoDB с Morphia в качестве моей внутренней базы данных, я реализовал служебный класс для упрощения доступа к базе данных.Я реализовал базовую функцию добавления пользователя с помощью Тем не менее, я получаю множество исключений:

java.lang.IndexOutOfBoundsException исключение, когда я ставлю

Query query = datastore.createQuery (User.class)фильтр ("имя =", имя пользователя);

для проверки пользователя перед комитетом.

При удалении: я получаю два исключения:

java.lang.RuntimeException: java.lang.NumberFormatException:

Какисправить эту проблему?

Вот код, который у меня есть для проекта:

MorphiaUtil.java:

public class MorphiaUtil {

    protected final Log log = LogFactory.getLog(getClass());
    private static Mongo mongo;
    private static Datastore datastore;

    static {
        try {
            // Create the database connection
            mongo =  new Mongo("localhost");
            datastore = new Morphia().createDatastore(mongo, "mygwtapp");
        } catch (UnknownHostException e) {
            System.err.println("Caught Unknown host exception:"+e);
            e.printStackTrace();
        } catch (MongoException e) {
            System.err.println("Initial Datastore creation failed:"+e);
            e.printStackTrace();
        }
    }

    public static Datastore getDatastore() {
        return datastore;
    }
}

UserServiceImpl.java

public class UserServiceImpl extends RemoteServiceServlet 
    implements UserService {
    @Override
    public void addUser(String username, String password)
            throws IllegalArgumentException {
        try {
            Datastore datastore = MorphiaUtil.getDatastore();
            Query query = datastore.createQuery(User.class).filter("name = ", username); 
            User user = (User) query.asList().get(0);
            if (user == null) {
                user = new User(username, password);
                datastore.save(user);
            }

        } catch (Exception e) { 
            System.err.print("Caught exception:"+e);
        }
    }
}

1 Ответ

2 голосов
/ 13 сентября 2011

Я создал серверную версию всех своих bean-компонентов, и перед вызовом методов сохранения я конвертирую из Simple Beans (используется на стороне клиента) в MorphiaBeans (используется только для операций morphia).

Это не самый лучший способ исправить эту проблему, но он отлично работает для меня!

...