Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javagae数据存储的子查询_Java_Google App Engine_Jdo_Jdoql - Fatal编程技术网

javagae数据存储的子查询

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

我正在尝试创建一个用户数据库,在用户和好友列表之间建立连接。 有两个主表: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中的最后一个查询,我尝试执行以下操作:

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文档