Tôi đang viết một ứng dụng Java có sử dụng Hibernate để lấy dữ liệu, trong ứng dụng của tôi, tôi có một vùng văn bản đầu vào để người dùng nhập chuỗi lệnh sql và chạy thông qua Hibernate để nhận bất kỳ dữ liệu nào mà người dùng truy vấn, vì vậy tôi không biết trước bảng kết quả có thể trông như thế nào và do đó không biết tên cột, nhưng tôi cần hiển thị kết quả truy vấn người dùng trong bảng có tên cột liên quan đến trường dữ liệu, cách đạt được điều đó trong Hibernate? Tôi đã thử đoạn mã sau:Cách lấy tên cột từ kết quả truy vấn Hibernate trong Java?
Session session=HibernateUtil.getSession();
session.beginTransaction();
Query q=session.createQuery(hql);
AliasToEntityMapResultTransformer INSTANCE=new AliasToEntityMapResultTransformer();
q.setResultTransformer(INSTANCE);
List<Map<String,Object>> aliasToValueMapList=q.list();
for (Map<String,Object> map : aliasToValueMapList)
for (Map.Entry<String,Object> entry : map.entrySet()) System.out.println(entry.getKey()+" - "+entry.getValue());
Nó đã cho tôi thông báo lỗi sau: Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: sakila.entity.Actor không thể được đúc để java. util.Map
Nó trỏ đến vòng 1 cho vòng lặp, vì tôi mới dùng Hibernate, không biết nếu nó có thể thực hiện được trong đó, cách sửa mã trên? Ai đó có thể chỉ cho tôi một số mã mẫu hoạt động trong trường hợp của tôi không?
Chỉnh sửa: Như Marcel Stör đã đề cập bên dưới, tôi cần có khả năng cho phép cả hai tình huống xảy ra và không giới hạn khả năng truy vấn dữ liệu của người dùng, cách tốt nhất để làm điều đó là gì?