我使用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)]
有什么想法吗?
答案 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注释的结合使用。 (不幸的是,例外情况从一开始就没有明确说明)