【问题标题】:org.hibernate.hql.internal.ast.QuerySyntaxExceptionorg.hibernate.hql.internal.ast.QuerySyntaxException
【发布时间】:2015-12-31 08:36:12
【问题描述】:

我有一个函数正在尝试使用休眠从数据库中检索一些数据。我得到了

org.hibernate.hql.internal.ast.QuerySyntaxException: 用户未映射 [FROM User where id = :id]

    @Override
    public List<User> getUserById(int id) {
            System.out.println(id);
            Query query = sessionFactory.getCurrentSession().createQuery("FROM User where id = :id");
            query.setInteger("id", id);
            return query.list();
}

id 通过 URL 传递并由控制器类接收它,该控制器类进一步调用我的上述函数。

查询似乎是正确的,不明白为什么会出现这个错误。

请提供您的建议。 提前致谢。

【问题讨论】:

    标签: java sql hibernate


    【解决方案1】:

    您需要将User 类添加到hibernate.cfg.xml

    更新

    您的 HQL 查询是正确的。如果您在 hibernate.cfg.xml 中已经有 User 类,请尝试将 HQL 替换为此

    return (User) session.get(User.class, id);
    

    并且需要添加交易相关代码。

    【讨论】:

    • 它已经添加了,其他函数如 getallUser() 和 addUser() 工作正常。只有在通过 Id 获取 User 时,我才会遇到这个问题。
    • 很抱歉询问,您所说的交易相关代码是什么意思。我现在需要为交易写什么额外的东西。
    • @AmitKumar 您不仅应该将事务用于写入数据,还应该用于读取数据。如果您不使用声明式事务(例如通过 Spring @Transactional),则需要手动使用 beginTransaction()commit()
    【解决方案2】:

    我遇到了这个错误,并使用完整的类名 package+className 为我工作。

    在此处查看其他选项org.hibernate.hql.internal.ast.QuerySyntaxException: table is not mapped

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    猜你喜欢
    • 1970-01-01
    • 2014-03-25
    • 2016-06-08
    • 2018-08-11
    • 2016-12-24
    • 1970-01-01
    • 2020-03-13
    • 2016-03-23
    • 2016-07-12
    相关资源
    最近更新 更多