2013-09-03 2 views
1

IE: com.adms.fcl3.entity.User не может быть приведен к com.adms.fcl3.entity.UserВозможные причины исключения класса из экземпляра в его собственный класс?

Я начал получать такого рода ошибки, так как мигрирующие мой проект от EJB/ManagedBeans к КДИ, так что я дикой догадкой было бы то, что AoP/Injection испортит классы.

Но у меня нет доказательств этого. И никакого решения тоже нет.

Ответственный код:

public User getByLoginPasswdValid(String login, String passwd) { 
    TypedQuery<User> q = em.createNamedQuery("User.findByLoginPasswdValid", User.class); 
    q.setParameter("login", login); 
    q.setParameter("passwd", passwd); 
    List<User> results = q.getResultList(); 
    if (results.isEmpty()) { 
     return null; 
    } 
    return results.get(0); 
} 

Сбой при return results.get(0);. Debuger подтверждает мне, что список действителен, имеет объект User с соответствующими значениями и т. Д.

+1

Это может быть проблема с загрузкой класса. Этот метод называется внешним EJB, который использует тот же класс User? –

ответ

6

Когда у вас есть несколько загрузчиков классов, вы можете одновременно загрузить оба класса с тем же именем. Эти два класса не взаимозаменяемы. К сожалению, ClassCastException не дает никаких указаний на то, что, хотя классы имеют одинаковое имя, они не являются одним и тем же классом и имеют разные загрузчики классов.

+0

Spot on, у меня была проблема ClassLoader, которая теперь решена. Благодаря! – Psyx

+1

@Psyx Первый раз, когда я увидел эту ошибку, это было похоже на удар по лицу. :П –

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

  • Нет связанных вопросов^_^