JDO查询子对象的集合

时间:2013-07-12 00:39:18

标签: google-app-engine jdo

查询子属性时我面临空​​结果。

我的子对象是一个自定义对象列表,如下所示:

@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

1 个答案:

答案 0 :(得分:1)

我认为这是不可能的,因为我刚刚发现,在GAE文档中说明我们在查询父级时不能在过滤器中使用子实体

参考:https://developers.google.com/appengine/docs/java/datastore/jdo/overview-dn2