protected List query(String condition) {
String queryString = "FROM Worker";
System.out.println("adding to query");
if (condition != null) {
queryString += " " + condition;
System.out.println(condition);
}
System.out.println("added to query");
Query query = em().createQuery(queryString);
System.out.println("created query");
System.out.println("starting query");
List <Radnik> c = query.getResultList();
System.out.println(c.size());
List <WorkerBean> result = new ArrayList <WorkerBean>();
System.out.println("before for");
if (c instanceof List <? >) {
System.out.println("YES!");
for (Object obj: c) {
System.out.println("entered!!!");
System.out.println(c.get(0).getClass());
if (obj instanceof Worker) {
System.out.println("it's a worker");
}
Workerentity = (Worker) obj;
result.add(EntityToBean(entity));
}
c.clear();
System.out.println("out of for");
}
return result;
}
Так что вещь, которая меня и все остальные в офисе подслушивания является то, что при первом вызове этого запроса он проходит без проблем (полный список работников), но когда я позвонил во второй раз (с некоторыми параметрами), что говорит о том, что размер списка, как я ожидал, но бросаетJava отбрасывать исключение продолжает случайным образом появляться (первый он может использовать, после того, как оно наклоненное)
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to.
так, чтобы подвести итог не может бросить на во второй раз (@ System.out.println (c.get (0) .getClass());
Нет необходимости в 'if (c instanceof List >) {', поскольку это обеспечивается API. –
вместо 'System.out.println (c.get (0) .getClass());' вы не хотели печатать 'System.out.println (o.getClass());'. Я уверен, что при втором вызове данные (список) не будут одинаковыми. –
Как рабочий связан с Радником? –