具有相同类对象的java.lang.ClassCastException [英] java.lang.ClassCastException with the same class object
问题描述
这段代码激怒了我, 有时它可以工作,而另一些时候却不起作用!
This piece of code irritates me, sometimes it working and some other times it doesn't !
NamedQuery :(名称="User.findByLogin",查询="SELECT u 从用户u WHERE u.login =:login)
The NamedQuery : (name = "User.findByLogin", query = "SELECT u FROM User u WHERE u.login = :login")
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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!