org.hibernate.criterion.Restrictions的MYSQL表列名中的下划线抛出异常

时间:2015-06-30 14:47:08

标签: java mysql hibernate

我绝对是Hibernate的菜鸟,当表列名称有下划线时,我正在努力查询我的数据库。

根据我的阅读,下划线被视为通配符。因此,解决方案是删除它并使用camelCase列名。但是,这对我来说也不起作用。我真的很感激这里的一些帮助。

这是SQL表创建:

enter image description here

以下是我尝试查询的功能:

enter image description here

当我调用此函数时,我得到以下堆栈跟踪:

  

请求处理失败;嵌套异常是   org.hibernate.QueryException:无法解析属性:userId of ....

我已尝试使用userId的多种变体:user_id,userId,user_ID,userID,userid&什么都行不通我真的很感激这里的一些帮助。提前致谢。另一个奇怪的事情是,如果我只为publishId做的话,camelCasing可以工作。这对他们两个都不起作用......

这是带有它注释的Java类:

enter image description here

2 个答案:

答案 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))