当我在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;
}
答案 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代码的东西)