【发布时间】:2016-03-20 18:32:11
【问题描述】:
在 Hibernate 结果查询中检索实体的主键或 Id 时出现空指针异常。主键值只是一个长值。我的实体类:
@Entity
@Table(name="sample")
public class ccy{
@Id
@column(name = "S_ID")
private long id;
2nd varibale and so on
当我编写休眠查询来检索它导致空指针异常时,我的选择查询是:
long ID = 0;
String HQL = "select c.id from ccy c where c.name='sowndhar' ";
Query query = session.createQuery(HQL);
ID = (Long)query.uniqueResult(); //getting NullPointerException in this line
return ID;
请问有什么建议吗?任何帮助将不胜感激
【问题讨论】:
-
堆栈跟踪是什么?
-
显然查询必须为空。所以你可能想检查你的会话是否有问题。或者(因为我不知道休眠):可能是你首先必须执行你的查询吗?您创建查询似乎有点可疑;然后立即尝试访问其结果。此外: ccy 对于一个班级来说是一个非常糟糕的名字。应该以大写开头;和:不要缩写。存在可供阅读的代码;而这样的缩写并不能说明太多。
-
分享您创建会话和开始事务的完整代码。我怀疑你的会话有问题。另一点我注意到您期望从没有 where 子句的查询中获得唯一结果。如果您的代码有效并且有多个记录,那么它会给您 org.hibernate.NonUniqueResultException 错误。同样如前所述,您的命名约定非常混乱。
-
为什么
select id from sample应该返回一个 Long,我猜它返回一个 Long 列表,或者你的数据库中只有 1 个条目? -
我认为在 HQL 中使用“sample”不起作用,因为“sample”是表名,但 HQL 需要实体/类名(在您的情况下为 ccy)
标签: java mysql hibernate nullpointerexception hql