2011-08-17 34 views
10

tôi đang đối mặt với ngoại lệ: org.hibernate.hql.ast.QuerySyntaxException: Student6 không được ánh xạ [từ Student6 stud] tên bảng của tôi là Student6 trong máy chủ sql cơ sở dữ liệu và tên lớp pojo là Student.org.hibernate.hql.ast.QuerySyntaxException: tablename không được ánh xạ

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(); 
    } 
} 
+0

Bạn phải thêm bản đồ của mình – ssedano

Trả lời

32

Truy vấn của bạn không phải là truy vấn SQL. Đó là truy vấn HQL. Do đó, không nên sử dụng tên bảng, nhưng tên lớp thực thể (from Student thay vì from Student6). Và nó sẽ không trả về các hàng dưới dạng các trường hợp Object[], nhưng sẽ trả về các thể hiện thực thể.

Hibernate là ORM: Công cụ lập bản đồ quan hệ đối tượng. Ý tưởng là sử dụng các đối tượng thay vì dữ liệu quan hệ. Bạn nên đọc lại số Hibernate reference manual.

+0

Cảm ơn JB Nizet. – user783160

+0

@JB Nizet - cảm ơn câu trả lời hay Tôi đã quá nhanh để trả lời tôi không nhận thấy sự khác biệt giữa 'Sinh viên' và 'Sinh viên6' :) –

+0

Cảm ơn, tôi đã tìm kiếm và đây là câu trả lời. – Fabii

Các vấn đề liên quan