나는 데이터를 얻기 위해 Hibernate를 사용하는 Java 애플리케이션을 작성하고있다. 애플리케이션에서 사용자가 입력 한 sql 명령 문자열을 사용하는 입력 텍스트 영역을 가지고 있으며, 사용자가 쿼리 한 데이터를 얻기 위해 최대 절전 모드를 통해이를 실행한다. 결과 테이블이 어떻게 보일지 미리 알 수 없으므로 열 이름을 알지 못합니다. 그러나 열 이름이 데이터 필드와 관련된 테이블에 사용자 쿼리 결과를 표시해야합니까?이를 어떻게 최대 절전 모드에서 수행 할 수 있습니까? 나는 다음과 같은 코드를 시도했다 :최대 절전 모드 쿼리 결과에서 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());
그것은 나에게 다음과 같은 오류 메시지가 준 : 스레드 "AWT-EventQueue의-0"java.lang.ClassCastException가의 예외 : sakila.entity.Actor는 자바로 캐스팅 할 수 없습니다. util.Map
첫 번째 for 루프를 가리키고 있습니다. 최대 절전 모드를 처음 사용하기 때문에, 위의 코드를 수정하는 방법을 알지 못합니까? 누군가 내 케이스에서 작동하는 몇 가지 샘플 코드를 보여줄 수 있습니까?
편집 : Marcel Stör이 아래에 언급했듯이 두 가지 상황이 발생하도록 허용해야하며 사용자가 모든 데이터를 쿼리 할 수있는 능력을 제한하지 않아야하며,이를 수행하는 가장 좋은 방법은 무엇입니까? 나는 아주 이해하지만 여전히 대답을 감히하지 않습니다