3 Stimmen

Abfrage im Google App Engine-Datenspeicher aktualisieren (java)

Wie verwendet man die Aktualisierungsabfrage in Google App Engine bei der Verwendung mit gwt. Ich versuche, eine Chat-Anwendung zu erstellen, bei der der Administrator neben dem Senden und Löschen der vorherigen Nachrichten auch die Teile der vorhandenen Nachrichten bearbeiten kann.

Zum Bearbeiten der vorhandenen Nachrichten ist eine Aktualisierungsabfrage erforderlich, und ich konnte im Datenspeicher keine solche Abfrage finden.

Wie können wir die vorhandenen Daten aktualisieren?

2voto

Romain Hippeau Punkte 23654

Hier ist ein Beispielcode aus http://www.ibm.com/developerworks/java/library/j-gaej3.html Sie können Ihre Daten mit "get" ändern, dann "make persistent" und dann "commit" machen.

Siehe die Methode updateContact() im beigefügten Code.

Der wichtigste Vorbehalt ist, dies über Entitäten hinweg zu tun - Hinweis: Die Datenspeicherung im DataStore unterscheidet sich von einer relationalen DB.

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();
        }
    }

}

1voto

Jason Hall Punkte 20201

Aufruf von makePersistent() bei einer abgerufenen oder zuvor eingefügten Entität wird die Entität im Datenspeicher aktualisiert. Siehe die Dokumente .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X