在playframework中查找JPA失败
我在PlayFramwork中使用JPA 我有一个带有HashSet字段的类页面在playframework中查找JPA失败,playframework,Playframework,我在PlayFramwork中使用JPA 我有一个带有HashSet字段的类页面 Set<PageStatus> pageStatus= new HashSet<PageStatus>(); status是包含这些代码的哈希集 Set<PageStatus> statuses = new HashSet<PageStatus>(); statuses.add(PageStatus.LATEST); Set status=newhashset()
Set<PageStatus> pageStatus= new HashSet<PageStatus>();
status是包含这些代码的哈希集
Set<PageStatus> statuses = new HashSet<PageStatus>();
statuses.add(PageStatus.LATEST);
Set status=newhashset();
状态。添加(PageStatus.LATEST);
有什么建议吗?谢谢。不能将集合用作like子句的参数。like需要一个字符串作为参数。唯一可以使用Set的子句是子句中的
问题是您试图通过M-N关系进行过滤。也就是说,一边是a组,另一边是B组
中的不起作用,因为它用于确定单个元素位于元素集合中。Like:元素x在给定的{array,list,set}z中。在您的场景中,您有2套,这将不起作用
Like
直接比较字符串。例如,字符串a类似于字符串B。您有两个集合,它也不起作用
从您的示例中,您希望通过实体集合中的元素进行过滤。试试这个:
PageStatus statuses = PageStatus.LATEST;
Page.find("(?1) in pageStatus", statuses).fetch()
如果要按多个元素进行筛选,则必须将筛选器与或
连接起来。我在子句中尝试过,但也失败了。find(“pageStatus in?”,status)在我的例子中,它在编写find(“from Page Page where Page.pageStatus in(?1)”,pageStatus.fetch()时起作用;页面状态在一个列表后面。但是,like和in的含义不同,请确保您编写的请求符合您的要求,但是它也不起作用……我用@ElementCollection注释此字段是否有问题?
PageStatus statuses = PageStatus.LATEST;
Page.find("(?1) in pageStatus", statuses).fetch()