我想在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查询有什么问题?