Org.hibernate.hql.ast.QuerySyntaxException: tablename не отображается
Я сталкиваюсь с исключением: org.hibernate.hql.ast.QuerySyntaxException: Student6 не отображается [из Student6 stud]
мое имя таблицы - это Student6 в базе данных сервера sql, а имя класса 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
Ваш запрос не является SQL-запросом. Это запрос HQL. Поэтому он не должен использовать имена таблиц, но имена классов сущностей (from Student
вместо from Student6
). И он не будет возвращать строки в форме экземпляров Object[]
, но будет возвращать экземпляры сущностей.
Спящий режим - это ORM: объект Relational Mapper. Идея заключается в использовании объектов, а не реляционных данных. Вы должны перечитать справочное руководство Hibernate.