2016-09-09 1 views
0
내가 나에게 두 개의 열 가져 최대 절전 NQL 쿼리를 사용하고

: 나는 단지 하나 개의 컬럼을 선택하면최대 절전 모드 기본 쿼리 반환 목록 개체 목록

SELECT object_name, 
     object_name_location 
FROM dbo.object_stacks 
WHERE object_id IN (SELECT thumb_nail_obj_id 
        FROM dbo.uois 
        WHERE Upper(NAME) LIKE Upper('%testobj%')) 

즉 단지 이름을 객체 - 모든 것이 잘 작동하지만,이 열이 나는를 오류가 발생했습니다.

java.lang.ClassCastException : [Ljava.lang.Object; 목록에서 결과를 표시하려고하면 런타임에 java.lang.String

으로 캐스팅 할 수 없습니다. String 배열을 목록에서 사용하려고했지만 작동하지 않습니다. 다음은 오류를주고 내 코드 조각은 다음과 같습니다

난 단지 목록 사용

:

List<String> Thumbnailpaths = pathquery.list(); 
System.out.println(Thumbnailpaths.get(i).replace("\\", "\\\\")); 

컴파일도 시간이 있지만 표시하는 선 위에 그대로두면 아무것도 없음 오류가 classcast 예외를 제공합니다.

나는 목록의 배열을 사용하는 경우 :

런타임

에서

List<String[]> Thumbnailpaths = pathquery.list(); 

System.out.println(Thumbnailpaths.get(i)[0].replace("\\", "\\\\")); 

여기서 다시 classcast 예외를 훨씬 더 복잡한 논리를 만들면서 또한 Criteria.ALIAS_TO_ENTITY_MAP 전혀 도움이되지 않습니다. 난 그냥 데이터베이스 테이블에서 2 열 값이 필요합니다.

NQL에 여러 열 결과를 가져온 다음 목록에 넣을 수있는 해결책이 있는지 알려주십시오.

참고 : 제네릭이 표시되지 않습니다 만 목록이 내 코드로 작성되고

+0

을 구문 분석 도움을 '(안'목록 ') 당신의 목록을 반환하려고으로 데이터베이스의 튜플 (예외 메시지가 의미하는 것). – Tiny

+0

해결되었습니다. 객체 배열을 사용할 때 정확한 결과가 나타납니다. \t \t \t Object [] data = Thumbnailpaths.get (i); – newuserhibernate

답변

1

예, 개체의 배열을 반환 최대 절전 모드 니펫을 여기처럼 보이는이 경우에 ([] 객체) - 여러 열을 반환합니다. 그러나 여전히 "raw"값이 아닌 엔티티 객체를 반환하기 위해 "Entity queries"을 사용할 수 있습니다.

+0

해결되었습니다. Object 배열을 사용하여 목록 데이터를 가져 왔습니다. (int i = 0; i newuserhibernate

0

Hibernate는 테이블의 컬럼에 대한 결과를 검색하고 Entity Object에 직접 저장하는 표준 방법을 제공하지 않는다. 쿼리로 가져온 데이터를 수동으로 구문 분석해야한다.

최대 절전 모드 쿼리는 개체 배열 목록, 즉 List<Object[]>을 반환합니다. Object[]에는 열의 데이터가 포함됩니다. 목록은 검색어로 검색 한 행뿐입니다. 귀하의 경우에는 다음 코드를 참조 할 수 있습니다 : 코드 위

List<Object[]> Thumbnailpaths = pathquery.list(); 
for(Object[] objArr : Thumbnailpaths) 
{ 
    String objName = (String)objArr[0]; 
    String objNameLocation = (String)objArr[1]; 
    System.out.println(objName + " : " +objNameLocation); 
} 

당신이 쿼리는`목록을 반환 object[]