GAE数据存储放置并获取

时间:2013-05-11 17:05:40

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

您好,我只是在玩数据存储区,并希望有人可以告诉我为什么我的简单代码不起作用?我刚刚玩弄了如何从数据存储中放入和获取字符串...不幸的是,我的GAE能力与我的弱java能力一样弱......

@SuppressWarnings("serial")
public class LoopingProgramServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {


    Key key = KeyFactory.createKey("a","b");        
    String Teststring = "pleasework";
    Entity greeting = new Entity("meh", key);
    greeting.setProperty("teststring", Teststring);     
    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
    datastore.put(greeting);



    Entity greetings = null;
    resp.setContentType("text/plain");
    resp.getWriter().println("doing something");


    try {
        greetings = datastore.get(key);
        String string = (String) greetings.getProperty("teststring");


        if (string == null) {
            resp.setContentType("text/plain");
            resp.getWriter().println("null");   
            System.out.println("null");
        } else {
            resp.setContentType("text/plain");
            resp.getWriter().println("contains something"); 
            System.out.println("contains something");
        }

        resp.setContentType("text/plain");
        resp.getWriter().println(string);   

    } catch (EntityNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }




}

}

1 个答案:

答案 0 :(得分:0)

您正在使用的Entity构造将Key参数解释为父实体的键。由于没有给出id或keyName(如果你改为使用here描述的其他Entity构造函数之一),将会在put时为问候语生成一个id。 / p>

datastore.get(key)返回null,因为key指的是keyName为“b”的类型“a”的实体,(我猜)它不存在。