Java Parse.com查询指针值

Java Parse.com查询指针值,java,android,parse-platform,Java,Android,Parse Platform,我正在使用android应用程序数据库 简言之,我查询的类A有一个指向类B的字段。如果我查询类A并包含类B,是否仍然存在查询筛选器和/或按类B中的字段排序 从我的描述中可以明显看出,我更熟悉sql风格的数据库。在parse中,我为被邀请参加游戏“GameInviteries”的人提供了一个表,其中包含一些元数据,例如他们被邀请的时间和他们的rsvp状态。然后是一个单独的带有游戏“gameInstances”的表。“GameInvestees”包括一个指向他们被邀请参加的游戏和被邀请的解析用户的指

我正在使用android应用程序数据库

简言之,我查询的类A有一个指向类B的字段。如果我查询类A并包含类B,是否仍然存在查询筛选器和/或按类B中的字段排序

从我的描述中可以明显看出,我更熟悉sql风格的数据库。在parse中,我为被邀请参加游戏“GameInviteries”的人提供了一个表,其中包含一些元数据,例如他们被邀请的时间和他们的rsvp状态。然后是一个单独的带有游戏“gameInstances”的表。“GameInvestees”包括一个指向他们被邀请参加的游戏和被邀请的解析用户的指针

我的问题是,我试图查询“GameInvestees”表,以便根据“gameInstance”表中的游戏时间找到被邀请参加游戏的当前用户

我当前的代码如下所示:

    Calendar cal = Calendar.getInstance();
    cal.setTime(new Date());
    cal.add(Calendar.HOUR, -1);
    final Date oneHourBack = cal.getTime();


    // get games that the current user is invited to
    ParseQuery<GamePhaseInvitees> inviteeQuery = ParseQuery.getQuery("gameInvitees");
    inviteeQuery.whereEqualTo("inviteeAccount", ParseUser.getCurrentUser());  // current user is invited
    inviteeQuery.include("GameInstance");
    //    inviteeQuery.whereGreaterThanOrEqualTo("GameInstance.GameTime", oneHourBack);  // game is one hour back (but, this doesn't work)


    inviteeQuery.findInBackground(new FindCallback<GamePhaseInvitees>() {
        public void done(List<GamePhaseInvitees> gamesInvitedToList, ParseException e) {
            if (e == null) {

            } else {
            }

        }
    });
Calendar cal=Calendar.getInstance();
校准设置时间(新日期());
计算添加(日历小时,-1);
final Date oneHourBack=cal.getTime();
//获取当前用户被邀请参加的游戏
ParseQuery inviteQuery=ParseQuery.getQuery(“游戏被邀请者”);
inviteeQuery.whereEqualTo(“inviteeAccount”,ParseUser.getCurrentUser());//当前用户已被邀请
包括(“游戏实例”);
//invitequery.whereter大于或等于(“GameInstance.GameTime”,一小时后);//游戏时间回到一小时前(但是,这不起作用)
findInBackground(新的FindCallback(){
已完成公共作废(列出gamesInvitedToList,Parsee异常){
如果(e==null){
}否则{
}
}
});

为了解释这个问题,代码被简化了一点。基本上,我需要找出一些我可以用注释掉的行来查询由指针连接的字段的方法。可能吗?有没有干净的解决方案?

这里有一个可能的解决方案:

根据表的类型创建ParseObject:
ParseObject时间=新建ParseObject(“日期”)
然后从结果中获取ParseObject:
time=result.getParseObject(指针\字段)

现在,您可以像平常一样从
time
任何字段中提取,例如:
time.getString(“some\u字段”)


您可能还需要包括:
query.include(“指针\u字段”)

根据解析社区:


您可以使用whereKey:matchesKey:inQuery:或whereKey:matcheskquery:,而不是whereKey:中的点符号。

日志中显示的错误是什么?我可以预见的一个潜在问题是,
Calendar.getInstance
是在你的应用程序中创建的,而不是在数据库中创建的,因此数据库的时间可能略有不同(可能会缩短几毫秒)。我想问题在于注释掉的行。当我取消注释它时,我得到的
点符号只能用于对象
。我只尝试了“gameTime”,但是,如果没有点符号,我假设没有返回任何结果。条件应用于错误的表。所以我只是想弄清楚如何对一个由指针连接的对象进行条件查询。可能吗?数据库表很好,感谢您的响应。我想我对我的问题不是很清楚。简言之,我查询的类A有一个指向类B的字段。如果我查询类A并包含类B,是否仍然存在查询筛选器和/或按类B中的字段排序?您的答案实际上非常接近我目前所做的查询,然后获取字段并手动处理过滤器,但这似乎效率低下,尤其是当我需要丢弃大部分返回结果时。