查询子属性时我面临空结果。
我的子对象是一个自定义对象列表,如下所示:
父
@PersistenceCapable
@Inheritance(customStrategy = "complete-table")
public class TimesheetRecordDaily{
...
@Persistent(embeddedElement = "true", serialized = "true", defaultFetchGroup="true")
@Element(embedded="true")
private List<TimesheetRecordDailyDetailDTO> timesheetRecordDailyDetails;
...
}
子
@PersistenceCapable
@EmbeddedOnly
public class TimesheetRecordDailyDetailDTO{
...
@Persistent
private String projectName;
...
}
查询:
Query query = pm.newQuery(TimesheetRecordDaily.class);
query.setFilter("this.timesheetRecordDailyDetails.contains(prd) && prd.projectName == 'MyProject'");
query.declareVariables(TimesheetRecordDailyDetailDTO.class.getName() + " prd");
List results = (List)query.execute();
如果我按如下所示更改查询过滤器(没有查询子属性值,则返回结果
query.setFilter("this.timesheetRecordDailyDetails.contains(prd)");
有任何帮助吗?这是JDO在JDE中运行查询子属性值的问题吗?
注意:我使用的GAE版本是1.8.2
答案 0 :(得分:1)
我认为这是不可能的,因为我刚刚发现,在GAE文档中说明我们在查询父级时不能在过滤器中使用子实体
参考:https://developers.google.com/appengine/docs/java/datastore/jdo/overview-dn2