es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Copiando entradas de Google Datastore de un “Kind” a otro “Kind” en el mismo proyecto usando Java

Estoy tratando de copiar algunas entradas Datastore de un tipo a otro en Google utilizando Java.

Tengo algunas entradas en el tipo “Reserva” y cuando ciertas condiciones se cumplen, me gustaría que estas entradas se copiaran en un nuevo tipo llamado “Activo”.

En el tipo “Reserva”, cada entrada tiene las siguientes propiedades como:

Nombre, Apellido, Marca de tiempo, etc.

Mi código hasta ahora es:

si (dataList.contains (“UpdateNeeded”)) {
Datastore datastore = DatastoreOptions.getDefaultInstance().getService();
Consulta consulta =
Query.newEntityQueryBuilder (). setNamespace (“userdata”)
.setKind (“Reserve”).build();
Resultados de Consulta resultados = datastore.run (consulta);
mientras que (resultados.hasNext ()) {
Entidad itr = resultados.next ();
// es aquí donde necesito implementar una lógica para copiar a otro tipo, pero parece que no logro encontrar cómo hacerlo.
}
}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para copiar entradas del Datastore de un Kind a otro utilizando Java y la API de Google Cloud Datastore, deberá implementar la siguiente lógica en el ciclo while:

    1. Cree un nuevo objeto Entity utilizando el constructor Entity.Builder y proporcione el nombre del nuevo Kind al que desea copiar las entradas. En este caso, sería “Activo”.
    2. Copie las propiedades del objeto Entity original que desea conservar en el nuevo objeto Entity. Puede acceder a las propiedades utilizando el método get (propertyName) y establecerlas utilizando el método set (propertyName, value).

    3. Guarde el nuevo objeto Entity en el datastore utilizando el método datastore.put(entity).

    Aquí hay una implementación de ejemplo de la lógica:

    if (dataList.contains ("UpdateNeeded")) {
        Datastore datastore = DatastoreOptions.getDefaultInstance().getService();
        Query<entity> query = Query.newEntityQueryBuilder().setNamespace("userdata")
                .setKind("Reserve").build();
        QueryResults<entity> results = datastore.run(query);
        while (results.hasNext()) {
            Entity itr = results.next();
            Entity newEntity = Entity.newBuilder("Active", itr.getKey ())
                                .set("Name", itr.getString("Name"))
                                .set("Surname", itr.getString("Surname"))
                                .set("Timestamp", itr.getLong("Timestamp"))
                                // agregar más propiedades que desea copiar
                                .build();
            datastore.put(newEntity);
        }
    }
    

    Este código crea un nuevo objeto Entity para cada entrada en el Kind “Reserve”, copia las propiedades que desea conservar y guarda el nuevo objeto Entity en el datastore en el Kind “Active”. Tenga en cuenta que itr.getKey () se utiliza para conservar la clave original de la entrada. Además, asegúrese de que las propiedades que desea copiar tengan el mismo nombre y tipo de datos en ambos Kinds.

Comments are closed.