Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
Java 应用程序引擎查询,使用集合上的where_Java_List_Google App Engine_Jpa_Members - Fatal编程技术网

Java 应用程序引擎查询,使用集合上的where

Java 应用程序引擎查询,使用集合上的where,java,list,google-app-engine,jpa,members,Java,List,Google App Engine,Jpa,Members,我正在使用AppEngine数据存储开发一个应用程序,由于不支持多对多关系,我想使用数据库的其他功能来帮助自己编写应用程序 事实上,我正在存储一个列表,其中包含必须与另一个表链接的每个对象中的相关对象的ID 注意:我使用Java和JPA来完成所有工作 这是我使用的类 @Entity public class Book { @Id private Long id; @ElementCollection private List<Long> specsId

我正在使用AppEngine数据存储开发一个应用程序,由于不支持多对多关系,我想使用数据库的其他功能来帮助自己编写应用程序

事实上,我正在存储一个列表,其中包含必须与另一个表链接的每个对象中的相关对象的ID

注意:我使用Java和JPA来完成所有工作

这是我使用的类

@Entity
public class Book {
    @Id
    private Long id;
    @ElementCollection
    private List<Long> specsId = new ArrayList<Long>();
    // ... getters & setters & other properties
}
或者只是尝试使用

select from Book b where b.specsId = 1
查看是否只返回specsId中至少包含“1”的图书,但查询返回数据存储中的每本图书

然后我在这里发现了另一个类似的问题,建议使用

select from Book b where 1 member of b.specsId
但这只是抛出了错误(类目簿上名为b的成员没有元数据。您确定在查询中提供了正确的成员名称吗?)

所以。。。有没有一种方法可以使用手写查询或使用javax.persistence.EntityManager提供的函数来实现这一点

先谢谢你

按建议编辑,我也试过了

select b from Book b where b.specsId in (list)

但是把书桌上的所有元素都还给了我好吧,我想我疯了。我尝试了各种可能的查询组合,结果如下:

select from Book b where 1 member of specsId
请注意,我第一次尝试的代码中唯一的区别是我没有指定b.specsId,而是只保留specsId
我仍然不知道为什么会这样,但不是相反的方式(它应该更具体),所以如果有人愿意为我解释的迷雾将不胜感激

您是否在私有列表specsId上使用@EllementCollection注释,我没有看到。请让我知道对不起,是的,我忘记写了!我现在就更新这个问题!很多都支持正常的JPA(无主)关系。我知道这一点,但我真的不知道/不明白如何查询数据库。我可能需要使用连接吗?如果你能给我指出正确的方向,我愿意自己做实验!如果你对谷歌插件的查询有问题,那么在日志中查看它发送的GAE/数据存储查询
select from Book b where 1 member of specsId