【发布时间】:2012-04-04 02:59:46
【问题描述】:
我在 HRD 谷歌应用引擎数据存储中使用嵌套实体组。
A
所有C都在同一个实体组(A一个)吗?
我想查询所有具有相同父A的C。我该怎么做?
这是失败的: SELECT * FROM C WHERE ANCESTOR IS Key('A',1)
任何提示?
测试已经直接在数据存储区的GQL中完成了,不管怎样,我附上sn-p的代码(Ofy4代码):
那是A:
@Entity
@Cache
public class Site implements Serializable {
private static final long serialVersionUID = 8611281648072797702L;
@Id
private Long id;
private String url;
...
}
那是乙:
@Entity
@Cache
public class Accom implements Serializable, HasCapacity {
@Id
private Long id;
@Parent
private Key<Site> site;
...
}
那是C:
@Entity
@Cache
public class Room implements Serializable, HasCapacity {
@Id
private Long id;
@Parent
private Key<Accom> accom;
...
}
【问题讨论】:
-
以什么方式“失败”?它是抛出异常还是不返回您知道的事实在数据库中的实体?还有什么?
-
补充亚当所说的:你能在执行查询和堆栈跟踪的地方发布你的代码的 sn-p(如果“失败”是一个例外)
-
没有失败。代码没有返回任何结果。我在 prod 中直接使用 GQL 进行测试。
-
请包含您正在执行的确切 GQL - 几乎可以肯定查询的表述有问题。
-
SELECT * FROM Room WHERE ANCESTOR IS Key('Site',1) 不起作用,SELECT *WHERE ANCESTOR IS Key('Site',1) 也不返回任何房间。
标签: google-app-engine transactions google-cloud-datastore objectify gql