Обновить запрос в хранилище данных Google App Engine (Java) - PullRequest
3 голосов
/ 21 апреля 2010

Как использовать запрос на обновление в google app engine при использовании с gwt. Я пытаюсь создать приложение для чата, в котором кроме отправки и удаления предыдущих сообщений администратор может редактировать части существующих сообщений.

Для редактирования существующих сообщений необходим запрос на обновление, и я не смог найти ничего похожего на запрос на обновление в хранилище данных.

Как мы можем обновить существующие данные?

Ответы [ 2 ]

2 голосов
/ 21 апреля 2010

Вот пример кода из http://www.ibm.com/developerworks/java/library/j-gaej3.html Вы можете изменить ваши данные, затем сделать стойкими, а затем зафиксировать.

См. Метод updateContact () в прикрепленном коде.

Основная оговорка заключается в том, чтобы делать это для разных сущностей. Примечание: хранение данных в хранилище данных отличается от реляционной БД.

package gaej.example.contact.server;

import gaej.example.contact.client.Contact;

import java.util.List;

import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;

public class ContactJdoDAO implements ContactDAO {
    private static final PersistenceManagerFactory pmfInstance = JDOHelper
            .getPersistenceManagerFactory("transactions-optional");

    public static PersistenceManagerFactory getPersistenceManagerFactory() {
        return pmfInstance;
    }

    public void addContact(Contact contact) {
        PersistenceManager pm = getPersistenceManagerFactory()
                .getPersistenceManager();
        try {
            pm.makePersistent(contact);
        } finally {
            pm.close();
        }
    }

    @SuppressWarnings("unchecked")
    public List<Contact> listContacts() {
        PersistenceManager pm = getPersistenceManagerFactory()
                .getPersistenceManager();
        String query = "select from " + Contact.class.getName();
        return (List<Contact>) pm.newQuery(query).execute();
    }

    public void removeContact(Contact contact) {
        PersistenceManager pm = getPersistenceManagerFactory()
                .getPersistenceManager();
        try {
            pm.currentTransaction().begin();

            // We don't have a reference to the selected Product.
            // So we have to look it up first,
            contact = pm.getObjectById(Contact.class, contact.getId());
            pm.deletePersistent(contact);

            pm.currentTransaction().commit();
        } catch (Exception ex) {
            pm.currentTransaction().rollback();
            throw new RuntimeException(ex);
        } finally {
            pm.close();
        }
    }

    public void updateContact(Contact contact) {
        PersistenceManager pm = getPersistenceManagerFactory()
                .getPersistenceManager();
        String name = contact.getName();
        String phone = contact.getPhone();
        String email = contact.getEmail();

        try {
            pm.currentTransaction().begin();
            // We don't have a reference to the selected Product.
            // So we have to look it up first,
            contact = pm.getObjectById(Contact.class, contact.getId());
            contact.setName(name);
            contact.setPhone(phone);
            contact.setEmail(email);
            pm.makePersistent(contact);
            pm.currentTransaction().commit();
        } catch (Exception ex) {
            pm.currentTransaction().rollback();
            throw new RuntimeException(ex);
        } finally {
            pm.close();
        }
    }

}
1 голос
/ 21 апреля 2010

Вызов makePersistent() для объекта, который был извлечен или ранее вставлен, обновит объект в хранилище данных. См. документы .

...