Google App Engine Java和实体搜索

时间:2013-06-30 09:53:46

标签: java google-app-engine

我正在使用GAE Java开发一个Web应用程序。我以这种方式创建了实体Repair和LineRepair:

public static void createOrUpdateRiparazione(Key key, String plate,
        String mechanicname, String type, String km, String description,
        String date, String price, String qta) {
    Transaction txn = Util.getDatastoreServiceInstance().beginTransaction();

    try {

        Entity repair = new Entity("Repair", key);
        repair.setProperty("plate", plate);
        repair.setProperty("date", date);
        repair.setProperty("status", "Created");
        repair.setProperty("km", km);
        repair.setProperty("mechanic", mechanicname);
        Util.getDatastoreServiceInstance().put(repair);

        Entity lineRepair = new Entity("LineRepair", repair.getKey());
        lineRepair.setProperty("type", type);
        lineRepair.setProperty("description", description);
        lineRepair.setProperty("price", price);
        lineRepair.setProperty("qta", qta);
        lineRepair.setProperty("repairID",
                String.valueOf(repair.getKey().getId()));
        Util.getDatastoreServiceInstance().put(lineRepair);

        txn.commit();
    } finally {
        if (txn.isActive()) {
            txn.rollback();
        }
    }
}

现在我不会在给定盘子和赔偿日期的情况下搜索汽车的维修。这是因为我想添加一个条件,如果在该日期已经有修复,那么添加一个LineRepair。我正在使用Code Lab Project的类util。 Here有实体汽车和用户。谢谢你的帮助

编辑:他们传递的密钥是Car的关键

1 个答案:

答案 0 :(得分:0)

您需要具有修复板和修复日期的复合索引,然后使用函数查询修复实体以获取给定的板和修复日期值。如果获得查询响应,请使用getkey()查询结果并将其传递给函数以创建相应的linerepair实体。