select子句中的HQL错误

时间:2009-07-15 10:20:07

标签: hql

当我在Hibernate(HQL)中使用SQL查询时出现以下错误:

student is not mapped. [select stud.vStudentName from student as stud]

以下是MySQL中的表名,以下是select查询的功能。

public static void querySubject(Session session) 
{
    String sql_query="select stud.vStudentName from student as stud";
    Query query1=session.createQuery(sql_query);

    for(Iterator it=query1.iterate();it.hasNext();) 
    {
        Object[] row = (Object[]) it.next();
        System.out.println("Subject Name:"+row[0]);
    }

    return;
}

3 个答案:

答案 0 :(得分:0)

这可能不是HQL问题,除非您的类实际上名为Student例如 - HQL区分大小写。更可能是映射问题。检查您是否可以通过Session.get方法使用您的学生课程。如果是这样,那就是你没有正确地映射它。

答案 1 :(得分:0)

在HQL中,Java类区分大小写,因此请尝试

String sql_query="select stud.vStudentName from Student as stud";

答案 2 :(得分:0)

HQL不是SQL。它是映射到SQL的东西。您应该在HQL中使用的名称​​不数据库中的表和列的名称。您应该在HQL中使用的名称是Java代码库中属性的名称。

因此,除非您的Java类也被称为“student”,否则您应该将“student”更改为映射到“student”表的Java类的实际名称。

(如果你想能够使用文字SQL,我认为createSQLQuery是你正在寻找的方法。你可能没有 - 但是没有必要使用SQL来做这么简单的事情,而你也可以坚持使用更贴近你的Java代码的东西)