cómo aplicar el filtro de fecha en la consulta de antepasado
Tengo dos modelos de entidad Estudiante y asistencia, de modo que cada entidad de asistencia tiene un estudiante asociado padre.
Modelo de asistencia:
@Entity
public class Attendance {
@Id
Long id;
@Index
Date date;
@Parent
@Index
@ApiResourceProperty(ignored = AnnotationBoolean.TRUE)
Ref<Student> studentRef;
public Long getId() {
return id;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getWebsafeKey() {
return Key.create(studentRef.getKey(), Attendance.class, id).getString();
}
}
Modelo de estudiante:
@Entity
public class Student {
@Id
Long id;
@Index
String name;
String student_id;
Long mobile_number;
String email;
@Index
@ApiResourceProperty(ignored = AnnotationBoolean.TRUE)
List<Ref<Shift>> shiftRef = new ArrayList<Ref<Shift>>();
public Long getId() {
return id;
}
public String getStudent_id() {
return student_id;
}
public void setStudent_id(String student_id) {
this.student_id = student_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getMobile_number() {
return mobile_number;
}
public void setMobile_number(Long mobile_number) {
this.mobile_number = mobile_number;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getWebsafeKey() {
return Key.create(Student.class, id).getString();
}
}
Así es como estoy insertando una entidad de asistencia en el almacén de datos:
Key<Student> studentKey = Key.create(student_web_safe_key);
Date date = new Date();
date.setTime(System.currentTimeMillis());
attendance.setDate(date);
attendance.studentRef = Ref.create(studentKey);
ofy().save().entity(attendance).now();
Preguntas:
La consulta anterior almacena la fecha en el almacén de datos en formato:2016-06-15 (18: 01: 18.845) IST
Pero cuando recupero la misma entidad sin especificar su padre, me da la fecha como:"fecha": "2016-06-15T12: 31: 18.845Z". por favor explique esto?
Puedo almacenar la asistencia correspondiente a cada estudiante y también puedo recuperar toda la asistencia de un estudiante. pero, ¿cómo puede recuperar la asistencia del estudiante en una fecha específica o rango de fechas? Intenté soplar consulta:Consulta query = ofy (). Load (). Type (Attendance.class) .ancestor (studentKey) .filter ("date =", date);
pero me da la siguiente excepción:
com.google.api.client.googleapis.json.GoogleJsonResponseException:
503 Service Unavailable
{
"code": 503,
"errors": [
{
"domain": "global",
"message": "com.google.appengine.api.datastore.DatastoreNeedIndexException: no matching index found. recommended index is:\n- kind: Attendance\n ancestor: yes\n properties:\n - name: date\n\nThe suggested index for this query is:\n <datastore-index kind=\"Attendance\" ancestor=\"true\" source=\"manual\">\n <property name=\"date\" direction=\"asc\"/>\n </datastore-index>\n\n",
"reason": "backendError"
}
],
"message": "com.google.appengine.api.datastore.DatastoreNeedIndexException: no matching index found. recommended index is:\n- kind: Attendance\n ancestor: yes\n properties:\n - name: date\n\nThe suggested index for this query is:\n <datastore-index kind=\"Attendance\" ancestor=\"true\" source=\"manual\">\n <property name=\"date\" direction=\"asc\"/>\n </datastore-index>\n\n"
}