你能帮我解决这个问题吗?我想使用此方法在我的数据库中查找特定的缺口(它是由Apache Derby制作的)。我使用了EntityManager并从NetBeans中的数据库中映射持久性-实体类。
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中创建查询时出现异常:< br >异常描述:解析[SELECT * FROM User u WHERE u . nick =:nick]时出现语法错误。< br> [21,21]select语句必须有FROM子句。< br> [7,7]算术表达式中缺少左表达式。[9,20]正确的表达式不是算术表达式。< br> [41,42]查询包含格式错误的结尾。
请问问题在哪里?
它应该是
更新
根据您的评论,现在查询应该是:
SELECT u.userID, u.enterKey, u.nick
FROM User u
WHERE u.nick = ?
或具有命名参数
SELECT u.userId, u.enterKey, u.nick
FROM User u
WHERE u.nick = :nick
其中 usereID、enterKey 和 nick 是实体类型 User 的字段(属性)。
您的用户类应该看起来像这样
@Entity
public class User {
@Id
private long userId;
@column(name="EnterKey"
private String enterKey;
@column(name="nick")
private String nick;
// setter getter
}
考虑到这一点,hql和您使用了对象模型的类和属性名称,您将其定义为查询的参数。
在查询中,Hibernate或任何其他 JPA 实现使用您定义的映射创建用户类型的对象列表。表达式 *
不能与此类型的对象名称相关联。在 sql 中,与 *
等效的是与对象相关的查询语言,只是在您的情况 “u” 中 from 子句的别名,因为 from 子句如下所示:
From User u
如果你只想选择你的实体的单独的字段,你必须声明
Select alias.property
from Entity alias
或在您的特殊情况下
Select u.nick
From User u
在这种情况下,将创建User类型的实例并设置字段nick。
如果尼克
是实体的主键(@Id
),则使用:
return em.find(eng.db.User, nick) != null;
或者如果不是:
Query q = em.createQuery("SELECT TRUE FROM User u WHERE u.nick =:nick");
q.setParameter("nick", nick);
return !q.getResultList().isEmpty();
通过返回一个简单的布尔值,您可以最小化DB响应。
我使用Spring Boot 1.4.1和spring-boot-starter-data-jpa 当查询我的自定义方法时,比如'find byname(String name)',它不是缓存。
问题内容: 我正在尝试以下JPQL,但它失败了: 我得到以下异常: 我有Spring 3.0.1.RELEASE,Hibernate 3.5.1-Final和Maven来粘合依赖项。 用户类别: spring配置: Persistence.xml pom.xml Maven依赖项。 我正在运行单元测试以检查配置,并且我能够运行其他JPQL查询,但我无法运行的唯一条件是IS EMPTY,MEMBER
问题内容: 我有一个非常简单的查询,像这样: 我的默认设置是或某些用户ID,但是由于某种原因,该查询总是返回0行,我也尝试过,但还是没有运气,这可能是什么错误? EDTI 因此,在运行更多查询后,我发现我的问题是字段的默认值,因此我修改了查询,现在可以正常使用: 问题答案: NULL值需要特殊处理:http : //dev.mysql.com/doc/refman/5.1/en/working-w
问题内容: 非常感谢你的帮助。我有一个和表。位置 我对位置模型执行以下查询。 然后,我要对其执行附加查询并根据以下内容对其进行过滤 该查询并 没有 工作。它返回一个空对象。 这是参数: location_params 1} permitted: true> ads_params 1} permitted: true> 不允许这样输入特定的列: 我有postgresql,我没有考虑过使用SQL,但是
我想让ElasticSearch在我的盒子上工作。我有以下映射: 所以我有一个“运动鞋”索引,它有一个“运动鞋”类型,一个“品牌”属性,它有一个“ID”和一个“标题”。 检查运动鞋是否存在,运行curl-xget“http://localhost:9200/sneakers/sneaker/1?prettley”,我得到: 现在,runningcurl-xget'http://localhost:
问题内容: 我正在使用嵌套集模型在iPhone上的本地SQLite数据库中存储较大的数据层次结构。我从他们的网站上阅读了MySQL技术文章,了解如何执行此操作,但是他们建议的查询(以及我需要的查询)之一似乎不适用于SQLite,并且我不确定如何解决它。 SQLite报告不是列,我认为这是因为其子查询实现不完整。有人对如何解决此限制有任何想法吗? 查询的目的是获取给定父节点的所有直接子代。 问题答案