【问题标题】:GAE data store not returning entitiesGAE 数据存储不返回实体
【发布时间】:2015-03-17 16:15:24
【问题描述】:

我使用 objectify 来查询我设置的 GAE 数据存储,其中至少包含一个实体,但我不断收到以下响应

200 OK
  • 显示标题 -

{

"kind": "call#resourcesItem", "etag": "\"AiR-q6YO1YYMgAaz-ZfT_fl7oeY/pcKQAVaDylr_ZSckRfQAxsphOUU\""

}

这是 objectify 请求的样子

@ApiMethod(name = "queryCalls", path = "queryCalls", httpMethod = HttpMethod.POST)

public List<Call> queryCalls()
{
    Query<Call> query = ofy().load().type(Call.class).order("name");
    return query.list();


}   

Call 显然是正在使用的实体的类。

任何解决方案将不胜感激

编辑 这里是调用类供参考

package com.cms.log;

import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
import com.googlecode.objectify.annotation.Index;



/* Patient Entity */
@Entity
public class Call {

@Id Long callId;
@Index String patientName;
@Index String doctor;
String address1;
String address2;
String address3;
String postCode;
String patientLocation;
@Index String symptoms;
Integer contactNumber;
@Index String callDateTime;
String currentStatus;



 public Call(Long callId, String patientName, String doctor, String address1,
        String address2, String address3, String postCode, String patientLocation, String symptoms,
        Integer contactNumber, String callDateTime, String currentStatus) 
{
    this.callId = callId;
    this.patientName = patientName;
    this.doctor = doctor;
    this.address1 = address1;
    this.address2 = address2;
    this.address3 = address3;
    this.postCode = postCode;
    this.patientLocation = patientLocation;
    this.symptoms = symptoms;
    this.contactNumber = contactNumber;
    this.callDateTime = callDateTime;
    this.currentStatus = currentStatus;
};

public Long getCallId() {
    return callId;
}

public void setCallId(Long Id) {
    this.callId = Id;
}

public String getPatientName() {
    return patientName;
}

public void setPatientName(String patientName) {
    this.patientName = patientName;
}

public String getDoctor() {
    return doctor;
}

public void setDoctor(String doctor) {
    this.doctor = doctor;
}

public String getAddress1() {
    return address1;
}

public void setAddress1(String address1) {
    this.address1 = address1;
}

public String getAddress2() {
    return address2;
}

public void setAddress2(String address2) {
    this.address2 = address2;
}

public String getAddress3() {
    return address3;
}

public void setAddress3(String address3) {
    this.address3 = address3;
}

public String getPostCode() {
    return postCode;
}

public void setPostCode(String postCode) {
    this.postCode = postCode;
}

public String getPatientLocation() {
    return patientLocation;
}

public void setPatientLocation(String patientLocation) {
    this.patientLocation = patientLocation;
}

public String getSymptoms() {
    return symptoms;
}

public void setSymptoms(String symptoms) {
    this.symptoms = symptoms;
}

public int getContactNumber() {
    return contactNumber;
}

public void setContactNumber(int contactNumber) {
    this.contactNumber = contactNumber;
}

public String getCallDateTime() {
    return callDateTime;
}

public void setCallDateTime(String callDateTime) {
    this.callDateTime = callDateTime;
}

public String getCurrentStatus() {
    return currentStatus;
}

public void setCurrentStatus(String currentStatus) {
    this.currentStatus = currentStatus;
}

}

【问题讨论】:

  • 那么,您是说您的查询没有返回任何结果吗?您需要包含 Call 类的相关部分,以帮助其他人理解问题。
  • 是的,这就是我的意思,我现在将在编辑中包含调用类
  • 我在您的 Call 类中看不到 name 属性。你的意思是patientName
  • 我尝试添加 PatientName,但它给了我一个 503 错误
  • 您需要在开发者控制台中查看您的 Web 应用程序日志,以了解导致错误的原因。

标签: java google-app-engine google-cloud-datastore objectify


【解决方案1】:

正如您在上一条评论中强调的那样,您的 @Entity 类必须具有无参数构造函数,以便 Objectify 能够从 Datastore 实体构造对象。

排序后,您将能够使用您的类中定义的@Indexed 属性对结果进行排序。

【讨论】:

  • 我如何在不添加 arg 构造函数的情况下为 Call 类重新创建构造函数????
  • 您可以拥有多个构造函数,但必须使用无参数的构造函数。
  • 那是超级伙伴。太感谢了。周末我一直在研究这个问题,但在任何地方都找不到答案,所以谢谢一百万
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多