sfr*_*frj 2 java jpa jpql java-ee java-ee-6
我试图弄清楚这个方法的问题是什么,它使用JPQL来验证数据库中是否已存在电子邮件,由于某种原因它不起作用.有人可以看看吗?或者给另一个替代查询更简单?
@Override
public boolean emailAlreadyExists(String value) {
Query checkEmailExists = em.createQuery("SELECT COUNT(b.email) FROM "
+ Buyer.class.getName() + " b WHERE email = :emailparam");
checkEmailExists.setParameter("emailparam", value);
long matchCounter = 0;
matchCounter = (Long) checkEmailExists.getSingleResult();
if (matchCounter > 0) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
这是控制台输出的一部分:
引发者:异常[EclipseLink-8024](Eclipse Persistence Services - 2.0.1.v20100213-r6600):org.eclipse.persistence.exceptions.JPQLException异常描述:解析查询时出现语法错误[SELECT COUNT(b.email)FROM entities .Buyer b WHERE b.email =:emailparam],第1行,第35列:[.]处的语法错误.内部异常:MismatchedTokenException(83!= 78)
我确定它必须对语法做些什么.但是我犯了错误?
通常,JPA使用短类名(没有包名).我个人从未在JPA查询中使用别名,因此我不确定它们是否受到支持.并且您在查询中不需要它们.我不确定=和:之间的空格是否允许.
所以,试试这个: SELECT COUNT(email) FROM Buyer WHERE email=:emailparam
我希望这会奏效.在这种情况下,尝试使用查询并查看哪个更改确实可以正常工作.
归档时间: |
|
查看次数: |
3888 次 |
最近记录: |