Jpa查询和,或使用

时间:2018-02-07 09:28:17

标签: hibernate

我写了一个查询,但是这个查询返回了这个错误。你有什么想法吗?我猜我因为括号而得到这个错误

 @Query("select u from Context u where u.user.id <> :userId and u.publicWatch = 1 and  u.isDeleted = 0 and (u.contextType.id  IN :contextTypeId  or u.status IN :status)")
Page<Context> findFilteredContexts(@Param("userId") Long userId,@Param("contextTypeId") List<Long> contextTypeId,@Param("status") List<String> status, Pageable pageable);

错误:

  

引起:java.lang.IllegalArgumentException:   org.hibernate.hql.internal.ast.QuerySyntaxException:意外的AST节点:   {vector} [select count(u)from com.huawei.ti.ei.web.domain.Context u where   u.user.id&lt;&gt; :userId和u.publicWatch = 1和u.isDeleted = 0和   (u.contextType.id IN(:contextTypeId_0_)或u.status IN:status_0_,   :STATUS_1 _)]

1 个答案:

答案 0 :(得分:0)

如果您使用的是旧版本的休眠,则必须用括号(:status)包围IN参数 (HHH-5126

受影响的版本3.5.1 -3.6,但查看有人报告更新版本的评论......