子树的意外结束

时间:2012-11-09 09:54:42

标签: hibernate jpa spring-data-jpa

我使用JPA和hibernate。我想检查具有指定名称和用户名的行是否存在。以下查询引发错误:

@Query("select exists (select 1 from Strategy s where s.name=:name and s.username=:username)")
Boolean exists2(@Param("name") String name,@Param("username") String username);

错误:

Caused by: org.hibernate.hql.ast.QuerySyntaxException: unexpected end of subtree [select exists (select s from com.soft.domain.strategy.Strategy s where s.name=:name and s.username=:username)]

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我通过切换以下内容来解决这个问题:

@Query("select count(s) from Strategy s where s.name=:name and s.username=:username")
long exists2(@Param("name") String name, @Param("username") String username);

答案 1 :(得分:0)

您是否将“:name”和“:username”替换为自己代替示例值,或者是您收到的确切错误消息?如果这是确切的消息,则表示您的命名参数未被替换。我对hibernate的这种特殊用法没有多少经验,但是要开始的地方就是调查命名参数与@Query注释的结合使用。 (不幸的是,例外情况从一开始就没有明确说明)