1

IE: com.adms.fcl3.entity.User 无法转换为 com.adms.fcl3.entity.User

自从将我的项目从 EJB/ManagedBeans 迁移到 CDI 后,我开始遇到这种错误,所以我的猜测是 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);。调试器确认我的列表是有效的,有一个用户对象,具有正确的值等...

4

1 回答 1

6

当你有多个类加载器时,你可以同时加载两个同名的类。这两个类是不可互换的。不幸的是,ClassCastException 没有告诉您虽然这些类具有相同的名称,但它们不是同一个类并且具有不同的类加载器。

于 2013-09-03T09:32:27.417 回答