0

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;
}
4

3 に答える 3

0

HQL は SQL ではありません。これは、SQLにマップされるものです。HQL で使用する必要がある名前は、データベース内のテーブルと列の名前ではありません。HQL で使用する名前は、Java コードベースのクラスプロパティの名前です。

したがって、Java クラスが「student」とも呼ばれている場合を除き、「student」を「student」テーブルにマップされている Java クラスの実際の名前に変更する必要があります。

(リテラル SQL を使用できるようにしたい場合は、createSQLQuery が探していた方法だと思います。おそらくそうではありませんでした。これほど単純なことに SQL を使用する必要はありません。 Java コードにより近いものを使用してください)。

于 2013-07-20T00:21:05.823 に答える
0

クラスの名前が実際に Student でない限り、これは HQL の問題ではない可能性があります。たとえば、HQL では大文字と小文字が区別されます。マッピングの問題である可能性が高いです。Session.get メソッドを介して学生クラスを使用できるかどうかを確認します。もしそうなら、それはあなたがこれを適切にマッピングしていないということです。

于 2009-07-15T10:28:45.293 に答える