Hibernate QuerySyntaxException,表未映射

时间:2015-08-15 14:37:25

标签: mysql sql spring hibernate

我正在关注此Tutorial。我添加了另一个DAO,我正在检索admin_roles表。该方法看起来像这样

public List findAllAdminRoleByUserName(String userName) {
    List<AdminRoles> users = new ArrayList<AdminRoles>();

    Query hqlQuery = sessionFactory.getCurrentSession().createQuery("from admin_roles AdminRoles where AdminRoles.username = ?");
    users =  hqlQuery.setString(0, userName).list();

    if (users.size() > 0) {
        return users;
    } else {
        return null;
    }
}

当我尝试检索时,我收到以下错误

HTTP Status 500 - Request processing failed; nested exception is org.hibernate.hql.internal.ast.QuerySyntaxException: admin_roles is not mapped [from admin_roles AdminRoles where AdminRoles.username = ?]

我能够从本教程中提到的管理表中获取值,我也创建了一些其他表,我可以从中获取值。但是只有这个表没有被映射。我还尝试将表的名称从“admin_roles”更改为adminroles(在数据库和代码中)我仍然得到相同的错误。

相关课程看起来像这样。实体注释也是javax

@Entity
@Table(name = "admin_roles", uniqueConstraints = @UniqueConstraint(columnNames = { "role", "username" }))
public class AdminRoles{

我错过了什么吗?提前致谢

1 个答案:

答案 0 :(得分:1)

你让桌子和实体感到困惑。表是关系数据库概念。它们被映射到实体,这些实体是Java类。 HQL使用实体。总是。从不表。

BTW,消息不是“表未映射”。这是“admin_roles未映射”。这是非常不同的。 HQL使用实体,因此它希望查询中的admin_roles成为映射实体。不是表名。而且您没有任何名为admin_roles的实体。

查询应为

select ar from AdminRoles ar where ar.username = ?

这假设在username实体类中有一个名为AdminRoles的映射字段/属性,当然。

相关问题