本文介绍了具有相同类对象的java.lang.ClassCastException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这段代码激怒了我,有时它可以工作,而另一些时候却不起作用!

This piece of code irritates me,sometimes it working and some other times it doesn't !

public User findByLogin(String login) {
        Query query = em.createNamedQuery("User.findByLogin");
        query.setParameter("login", login);
        try {
            return (User) query.getSingleResult();
        } catch (javax.persistence.NoResultException ex) {
            return null;
        }
    }

错误使我发疯!

Avertissement:EJB5184:在调用EJB UserFacade时发生系统异常,方法:public dz.admin.entity.User dz.admin.service.UserFacade.findByLogin(java.lang.String )广告:javax.ejb.EJBException.... 原因:java.lang.ClassCastException:dz.elit.admin.entity.User无法在dz.elit.admin.service上强制转换为dz.elit.admin.entity.User .UserFacade.findByLogin(UserFacade.java:45)

Avertissement: EJB5184:A system exception occurred during an invocation on EJB UserFacade, method: public dz.admin.entity.User dz.admin.service.UserFacade.findByLogin(java.lang.String)Avertissement: javax.ejb.EJBException.... Caused by: java.lang.ClassCastException: dz.elit.admin.entity.User cannot be cast to dz.elit.admin.entity.User at dz.elit.admin.service.UserFacade.findByLogin(UserFacade.java:45)

推荐答案

我在 spring-boot 应用程序中遇到了同样的问题,浪费了很多时间来解决它.

I face same issue in my spring-boot application and waste my so much time to solve it.

问题是由于类加载器而产生的.

Issue is generate because of classloaders.

Model类和Session类的类加载器都不同.

Classloaders of Model class and Session class both are different.

System.out.println("ClassLoader : " + Employee.class.getClassLoader());
System.out.println(session.getClass().getClassLoader()); //Hibernate Session object

ClassLoader : org.springframework.boot.devtools.restart.classloader.RestartClassLoader@a3af3c
sun.misc.Launcher$AppClassLoader@1d16e93

由于这种依赖性,我面临这个问题.

I face this issue because of this dependency.

<dependency>
  <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

当我对此进行评论时,我的代码可以正常工作,因此,我建议您检查一下您的罐子.

When i comment this then my code working fine, so i suggest you to please check your jars.

System.out.println("ClassLoader : " + Employee.class.getClassLoader());
System.out.println(session.getClass().getClassLoader()); //Hibernate Session object

ClassLoader : sun.misc.Launcher$AppClassLoader@1d16e93
sun.misc.Launcher$AppClassLoader@1d16e93

希望这个答案对您有所帮助.

Hope this answer help you.

这篇关于具有相同类对象的java.lang.ClassCastException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-05 05:40