我绝对是Hibernate的菜鸟,当表列名称有下划线时,我正在努力查询我的数据库。
根据我的阅读,下划线被视为通配符。因此,解决方案是删除它并使用camelCase列名。但是,这对我来说也不起作用。我真的很感激这里的一些帮助。
这是SQL表创建:
以下是我尝试查询的功能:
当我调用此函数时,我得到以下堆栈跟踪:
请求处理失败;嵌套异常是 org.hibernate.QueryException:无法解析属性:userId of ....
我已尝试使用userId的多种变体:user_id,userId,user_ID,userID,userid&什么都行不通我真的很感激这里的一些帮助。提前致谢。另一个奇怪的事情是,如果我只为publishId做的话,camelCasing可以工作。这对他们两个都不起作用......
这是带有它注释的Java类:
答案 0 :(得分:1)
在JPQL(HQL)中,您必须使用属性名称:
criteria.add(Restrictions.eq("userEmail", user));
这是ORM框架(如JPA(当然还有Hibernate等提供程序))的优势之一:您也可以在查询中使用面向对象的构造。
答案 1 :(得分:0)
您应该在条件中使用userEmail
,因为user_id
字段的名称为userEmail
。
criteria.add(Restrictions.eq("userEmail", user))