【发布时间】:2014-01-19 08:02:19
【问题描述】:
你能帮我解决这个问题吗?我想使用这种方法在我的数据库中查找特定的昵称(它是用 Apache Derby 制作的)。我在 NetBeans 中使用了 EntityManager 和映射 Persistence - 来自数据库的实体类。
public static boolean findByNick(String nick) {
List<eng.db.User> ret;
EntityManager em = getEntityManager();
Query q = em.createQuery("SELECT * FROM User u WHERE u.nick =:nick");
q.setParameter("nick", nick);
ret = q.getResultList();
em.close();
boolean hodnota = false;
if (ret.isEmpty()) {
hodnota = true;
}
return hodnota;
}
我收到此错误:
java.lang.IllegalArgumentException:在 EntityManager 中创建查询时发生异常:
异常说明:语法错误解析 [SELECT * FROM User u WHERE u.nick =:nick)]。
[21, 21] select 语句必须有 FROM 子句。
[7, 7] 算术表达式中缺少左表达式。
[9, 20] 正确的表达式不是算术表达式。
[41, 42] 查询包含格式错误的结尾。
请问哪里有问题?
【问题讨论】:
-
即使您使用:“FROM User u WHERE u.nick =:nick”作为查询?
-
问题出在哪里?这不是有效的 JPQL 查询。 JPQL 中没有“*”。任何基本的 JPA 参考都会告诉您这一点