select子句中的hql错误

时间:2009-07-15 15:11:30

标签: java hibernate

当我使用HQL select子句时出现以下错误.student是mysql表。 的错误: Hibernate:从student studentcla0_中选择studentcla0_.vStudentName作为col_0_0_ java.lang.String中

以下是代码:

public static void querySubject(Session session)
        {
            String sql_query="select stud.strStudentName from StudentClass 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还是sql。如果sql尝试:

session.createSQLQuery(...)

答案 1 :(得分:0)

只是为了确认 - 你的数据库中有一个名为“student”的表,它有一个名为“vStudentName”的列,它是某种类型的字符串类型?映射已完成,并导致转换为此SQL:

select studentcla0_.vStudentName as col_0_0_
from student studentcla0_

这是直接对您的数据库运行,还是在那里出错?

答案 2 :(得分:0)

当您选择单个值(无论是属性还是实体)时,Hibernate将直接返回该值;它将包装在Object数组中。详见here。所以你的代码应该是:

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