org.hibernate.hql.ast.QuerySyntaxException: tablename未映射

10

我遇到了异常:org.hibernate.hql.ast.QuerySyntaxException: Student6未映射[from Student6 stud]。 我的SQL Server数据库中的表名是Student6,而POJO类名是Student。

    public static void main(String[] args) {
    Configuration configuration = new Configuration();
    SessionFactory  sessionFactory = configuration.configure().buildSessionFactory();
    Session session = sessionFactory.openSession();
    try {
        String SQL_QUERY ="from Student6 stud";
             Query query = session.createQuery(SQL_QUERY);
             for(Iterator it=query.iterate();it.hasNext();)             {
             Object[] row = (Object[]) it.next();
             System.out.println("STUDENT_ID: " + row[0]);
             System.out.println("STUDENT_NAME: " + row[1]);
             System.out.println("ADDRESS_STREET: " + row[2]);
             System.out.println("ADDRESS_CITY: " + row[3]);
             System.out.println("ADDRESS_STATE: " + row[4]);
             System.out.println("ADDRESS_ZIPCODE: " + row[5]);                               }

    } catch (HibernateException e) {
        transaction.rollback();
        e.printStackTrace();
    } finally {
        session.close();
    }
}
1个回答

34

您的查询不是SQL查询,而是HQL查询。因此,它不应使用表名,而是实体类名(from Student而不是from Student6)。它不会以Object[] 实例的形式返回行,而是将返回实体实例。

Hibernate是一个ORM:对象关系映射器。思路是使用对象而不是关系数据。您应该重新阅读Hibernate参考手册


@JB Nizet - 感谢您的好回答。我太急于回复了,没有注意到“Student”和“Student6”的区别 :) - Darius Kucinskas
谢谢,我搜索了很久,这就是答案。 - Fabii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接