2012-04-13 4 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

Неплохо. Я получаю еще одно исключение. КСТАТИ. Я пытаюсь преобразовать 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 []. Не можете ли вы использовать массив Object вместо массива QuickLaunch []?

Смежные вопросы