如何比较JPA标准查询的计数结果?

时间:2015-06-08 13:18:23

标签: mysql jpa

我想在JPA条件查询中编写此SQL查询,以检查用户表中是否已存在邮件。

SELECT 
    count(*) = 1
FROM
    user
WHERE
    user.mail = 'example@gmail.com';

这是我的尝试。

@Override
public boolean isUserMailPresent(String mail) {
    CriteriaBuilder builder = this.entityManager.getCriteriaBuilder();

    CriteriaQuery<Boolean> cQry = builder.createQuery(Boolean.class);
    Root<User> fromUser = cQry.from(User.class);
    cQry.select(
            builder.equal(builder.count(fromUser), 1L))
            .where(builder.equal(fromUser.get(User_.mail), mail));
    return this.entityManager.createQuery(cQry).getSingleResult();
}

它会在执行时抛出异常。

  

内部例外:   com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你有一个   SQL语法错误;查看与您的手册相对应的手册   MySQL服务器版本,用于在'FROM user WHERE附近使用正确的语法   (mail_address ='example@gmail.com')'第1行错误代码:1064致电:   SELECT FROM user WHERE(mail =?)bind =&gt; [1参数绑定]查询:   ReportQuery(referenceClass = User sql =“SELECT FROM user WHERE   (mail_address =?)“)

但是JPA查询有什么问题?

0 个答案:

没有答案