2012-04-13 3 views
0

jpa 호출에서 다시 가져온 엔티티 목록에서 엔티티 배열을 가져 오려고 할 때마다 캐스팅 예외가 발생합니다. 예 ... 내 서버 로그에 JPA 엔티티 배열에 객체 배열을 캐스팅 하시겠습니까?

QuickLaunch[] qLaunchArr = null; 
List<QuickLaunch> listQL = null; 
try 
{ 
    System.out.println("testing 1..2..3"); 

    //qLaunchArr 
    listQL = emf.createNamedQuery("getQuickLaunch").getResultList(); 
    Object[] objArr = listQL.toArray(); 
    //System.out.println(listQL.size()); 
    qLaunchArr = (QuickLaunch[]) listQL.toArray();  
} 
catch (Exception e) 
{ 
    System.out.println("Bull Hockey!!!! I can't believe it's not butter!: "+e.toString()); 
} 

[Ljava.lang.Object; incompatible with [Lcom.upmc.esdm.messaging.entities.QuickLaunch; 

것을 (나는 WID를 사용하고 있습니다) 와 나는 또한

commonj.connector.runtime.DataHandlerException: CWLAP0507E: The response bean class for java class method GetAllQuickLaunchComponents cannot be created. Reason java.lang.IllegalArgumentException: argument type mismatch. 
+0

classCastException가 발생하지만 실제 예외 및 메시지를 인용하지 않으십니까? 좋은. – DataNucleus

+0

글쎄, 나는 그것이 일반적인 종류의 것이기를 바랬다. 그러나 나는 당신의 요구에 예외를 게시 할 것이다. – SoftwareSavant

답변

1

당신은 얻을 TypedQuery을 시도 할 수 있습니다 ...이 예외가 명시 적 캐스팅없이 엔터티 목록 & 예외를 방지합니다.

TypedQuery<QuickLaunch> listQL = em.createNamedQuery("QuickLaunch.getQuickLaunch", QuickLaunch.class); 

List<QuickLaunch> products = listQL .getResultList(); 

또한,보다 의미있는 방법으로 동급 또는 결과 유형을 식별하기 위해 쿼리 이름을 변경했습니다.

+0

좋지 않습니다. 나는 또 다른 예외를 얻고있다. BTW. List SoftwareSavant

+0

@DmainEvent 목록을 배열로 변환하는 특별한 이유가 있습니까? –

+0

그건 잘못된 것입니다, 나는 목록에서 배열로 변환 오전. 배열로 나오지 않습니다. 나는 그랬 으면 좋겠다. 거기에있는 코드 중 일부는이 쿼리에서 결과 배열을 얻을 수있는 모든 결과를 얻으려는 결과입니다. – SoftwareSavant

1

좋아 ... 나는 대답을 찾은 것 같습니다. 그것은 https://stackoverflow.com/a/8060077/729820

나는 기본적으로이

try 
    { 
     System.out.println("testing 1..2..3"); 
     listQL = emf.createNamedQuery("getQuickLaunch").getResultList(); 
     System.out.println("What is the size of this list: number "+listQL.size()); 
     qLaunchArr = listQL.toArray(new QuickLaunch[listQL.size()]);   
    } 

모든 예외를 잘 정리하는 것 할 ...이 게시물에 의해 영감을했다. 도움 주셔서 감사합니다.

1

JPA 대신 Java [Object]를 QuickLaunch []로 전송하지 않으므로 Java와는 관련이 없습니다. QuickLaunch [] 배열 대신 Object 배열을 사용할 수 있습니까?