2

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

@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)]

有任何想法吗?

4

2 回答 2

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);
于 2013-05-06T10:28:02.417 回答
0

您是否将“:name”和“:username”放回自己的位置以代替示例值,还是您收到的确切错误消息?如果那是确切的消息,那么您的命名参数似乎没有被替换。我对hibernate的这种特殊用法没有太多经验,但是从某个地方开始研究命名参数与@Query注释的结合使用。(不幸的是,这个例外从一开始就没有说明这一点)

于 2013-04-15T17:47:08.237 回答