javagae数据存储的子查询
我正在尝试创建一个用户数据库,在用户和好友列表之间建立连接。 有两个主表:UserEntity主字段id和FriendEntity带字段: -initiatorId-发起友谊的用户的id -friendId-已被邀请的用户的id 现在,我试图获取一个特定用户的所有好友,但在这里使用JDO中的子查询时遇到了一些问题 从逻辑上讲,查询应该是这样的: SQL:从存在的UserEntity中选择*选择*表单FriendEntity,其中initiatorId==UserEntity.id&&friendId==userId | | friendId==UserEntity.id&&initiatorId==userId 或者从UserEntity中选择*,其中userId在SELECT中;从FriendEntity中选择*,其中initiatorId==UserEntity.id;或者从FriendEntity中选择*,其中userId==UserEntity.id 因此,为了复制JDOQL中的最后一个查询,我尝试执行以下操作:javagae数据存储的子查询,java,google-app-engine,jdo,jdoql,Java,Google App Engine,Jdo,Jdoql,我正在尝试创建一个用户数据库,在用户和好友列表之间建立连接。 有两个主表:UserEntity主字段id和FriendEntity带字段: -initiatorId-发起友谊的用户的id -friendId-已被邀请的用户的id 现在,我试图获取一个特定用户的所有好友,但在这里使用JDO中的子查询时遇到了一些问题 从逻辑上讲,查询应该是这样的: SQL:从存在的UserEntity中选择*选择*表单FriendEntity,其中initiatorId==UserEntity.id&&friend
Query friendQuery = pm.newQuery(FriendEntity.class);
friendQuery.setFilter("initiatorId == uidParam");
friendQuery.setResult("friendId");
Query initiatorQuery = pm.newQuery(FriendEntity.class);
initiatorQuery.setFilter("friendId == uidParam");
initiatorQuery.setResult("initiatorId");
Query query = pm.newQuery(UserEntity.class);
query.setFilter("initiatorQuery.contains(id) || friendQuery.contains(id)");
query.addSubquery(initiatorQuery, "List initiatorQuery", null, "String uidParam");
query.addSubquery(friendQuery, "List friendQuery", null, "String uidParam");
query.declareParameters("String uidParam");
List<UserEntity> friends = (List<UserEntity>) query.execute(userId);
结果我得到以下错误:
分析表达式时不支持的方法
是否有人可以帮助您进行此查询?您正在尝试进行连接-您无法跨实体进行连接 下面是一个示例,说明如果存在一个已拥有的关系,则执行简单联接 再看看这个网站,它有很多关于持久性工作的非常好的信息。以及连接的一些变通方法
您可以在实体之间建立关系,请参见GAE文档。您正在尝试进行连接-无法跨实体进行连接 下面是一个示例,说明如果存在一个已拥有的关系,则执行简单联接 再看看这个网站,它有很多关于持久性工作的非常好的信息。以及连接的一些变通方法 您可以在实体之间建立关系,请参见GAE文档