Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hibernate exception _$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy

Hello I am using developnig java web application and I am getting the next exception when I am trying to fetch data using hibernate

java.lang.ClassCastException: com.digitalticket.model.UserType_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy 

Here stacktrace

java.lang.ClassCastException: com.digitalticket.model.UserType_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy     at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxy(JavassistLazyInitializer.java:147)     at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.getProxy(JavassistProxyFactory.java:75)     at org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:771)     at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:4613)     at org.hibernate.event.internal.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:349)     at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:270)     at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:150)     at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1070)     at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:989)     at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:716)     at org.hibernate.type.EntityType.resolve(EntityType.java:502)     at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:170)     at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:144)     at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:1114)     at org.hibernate.loader.Loader.processResultSet(Loader.java:972)     at org.hibernate.loader.Loader.doQuery(Loader.java:920)     at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354)     at org.hibernate.loader.Loader.doList(Loader.java:2553)     at org.hibernate.loader.Loader.doList(Loader.java:2539)     at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2369)     at org.hibernate.loader.Loader.list(Loader.java:2364)     at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:126)     at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1682)     at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:380)     at com.digitalticket.model.DAO.fetchAll(DAO.java:204)     at com.digitalticket.controller.IndexController.handleRequestInternal(IndexController.java:22)     at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:154)     at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50)     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)     at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)     at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)     at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)     at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)     at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:341)     at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:238)     at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3363)     at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3333)     at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)     at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)     at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)     at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2220)     at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2146)     at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2124)     at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1564)     at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)     at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:550)     at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295)     at weblogic.work.ExecuteThread.run(ExecuteThread.java:254) 

Here my code

public T fetchAll(tClass<T> className) {      Session s = sessionFactory.getCurrentSession();     s.beginTransaction();      try {          List<T> results = (List<T>) sessionFactory.getCurrentSession()                 .createCriteria(className)                 .list();          s.getTransaction().commit();          return results();      } catch (NullPointerException ex) {         return null;     }     catch (RuntimeException re) {         s.getTransaction().rollback();         throw re;     } finally {      } } 

Here is my objects

public class User implements java.io.Serializable {      /**      *       */     private static final long serialVersionUID = -2383716625869790753L;     private long userId;     private UserType userType;     private String email;     private String password;     private String name;     private String surname;     private String middlename;     private Set<Ticket> tickets = new HashSet<Ticket>(0);     private Set<Organization> organizations = new HashSet<Organization>(0);      public User() {     }      public User(long userId, String email, String password, String name,             String surname) {         this.userId = userId;         this.email = email;         this.password = password;         this.name = name;         this.surname = surname;     }      public User(long userId, UserType userType, String email, String password,             String name, String surname, String middlename,             Set<Ticket> tickets, Set<Organization> organizations) {         this.userId = userId;         this.userType = userType;         this.email = email;         this.password = password;         this.name = name;         this.surname = surname;         this.middlename = middlename;         this.tickets = tickets;         this.organizations = organizations;     }      public long getUserId() {         return this.userId;     }      public void setUserId(long userId) {         this.userId = userId;     }      public UserType getUserType() {         return this.userType;     }      public void setUserType(UserType userType) {         this.userType = userType;     }      public String getEmail() {         return this.email;     }      public void setEmail(String email) {         this.email = email;     }      public String getPassword() {         return this.password;     }      public void setPassword(String password) {         this.password = password;     }      public String getName() {         return this.name;     }      public void setName(String name) {         this.name = name;     }      public String getSurname() {         return this.surname;     }      public void setSurname(String surname) {         this.surname = surname;     }      public String getMiddlename() {         return this.middlename;     }      public void setMiddlename(String middlename) {         this.middlename = middlename;     }      public Set<Ticket> getTickets() {         return this.tickets;     }      public void setTickets(Set<Ticket> tickets) {         this.tickets = tickets;     }      public Set<Organization> getOrganizations() {         return this.organizations;     }      public void setOrganizations(Set<Organization> organizations) {         this.organizations = organizations;     }  }  public class UserType implements java.io.Serializable {      /**      *       */     private static final long serialVersionUID = -206438165274679246L;     private long userTypeCode;     private String userTypeName;     private Set<User> users = new HashSet<User>(0);      public UserType() {     }      public UserType(long userTypeCode, String userTypeName) {         this.userTypeCode = userTypeCode;         this.userTypeName = userTypeName;     }      public UserType(long userTypeCode, String userTypeName, Set<User> users) {         this.userTypeCode = userTypeCode;         this.userTypeName = userTypeName;         this.users = users;     }      public long getUserTypeCode() {         return this.userTypeCode;     }      public void setUserTypeCode(long userTypeCode) {         this.userTypeCode = userTypeCode;     }      public String getUserTypeName() {         return this.userTypeName;     }      public void setUserTypeName(String userTypeName) {         this.userTypeName = userTypeName;     }      public Set<User> getUsers() {         return this.users;     }      public void setUsers(Set<User> users) {         this.users = users;     }  } 

here is mappings

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"                                    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!-- Generated Mar 16, 2014 10:31:53 AM by Hibernate Tools 4.0.0 --> <hibernate-mapping>     <class name="com.digitalticket.model.User" table="&quot;USER&quot;">         <id name="userId" type="long">             <column name="USER_ID" precision="10" scale="0" />             <generator class="assigned" />         </id>         <many-to-one class="com.digitalticket.model.UserType"             fetch="select" name="userType">             <column name="USER_TYPE" precision="10" scale="0" />         </many-to-one>         <property generated="never" lazy="false" name="email" type="string">             <column length="20" name="EMAIL" not-null="true" unique="true" />         </property>         <property generated="never" lazy="false" name="password"             type="string">             <column length="32" name="PASSWORD" not-null="true" />         </property>         <property generated="never" lazy="false" name="name" type="string">             <column length="64" name="NAME" not-null="true" />         </property>         <property generated="never" lazy="false" name="surname" type="string">             <column length="64" name="SURNAME" not-null="true" />         </property>         <property generated="never" lazy="false" name="middlename"             type="string">             <column length="64" name="MIDDLENAME" />         </property>         <set fetch="select" inverse="true" lazy="true" name="tickets"             sort="unsorted" table="TICKET">             <key>                 <column name="USER" precision="10" scale="0" />             </key>             <one-to-many class="com.digitalticket.model.Ticket" />         </set>         <set fetch="select" lazy="true" name="organizations" sort="unsorted"             table="AUDITOR">             <key>                 <column name="USER" not-null="true" precision="9" scale="0" />             </key>             <many-to-many entity-name="com.digitalticket.model.Organization"                 unique="false">                 <column name="ORGANIZATION" not-null="true" precision="10"                     scale="0" />             </many-to-many>         </set>     </class> </hibernate-mapping>  <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!-- Generated Mar 16, 2014 10:31:53 AM by Hibernate Tools 4.0.0 --> <hibernate-mapping>     <class name="com.digitalticket.model.UserType" table="USER_TYPE">         <id name="userTypeCode" type="long">             <column name="USER_TYPE_CODE" precision="10" scale="0" />             <generator class="assigned" />         </id>         <property name="userTypeName" type="string">             <column name="USER_TYPE_NAME" length="40" not-null="true" unique="true" />         </property>         <set name="users" table="USER" inverse="true" lazy="true" fetch="select">             <key>                 <column name="USER_TYPE" precision="10" scale="0" />             </key>             <one-to-many class="com.digitalticket.model.User" />         </set>     </class> </hibernate-mapping> 

I am using Oracle Weblogic 12c server

like image 506
Sergey Pekar Avatar asked Mar 18 '14 13:03

Sergey Pekar


1 Answers

I use with hibernate 4.3.5.Final and have similar problem with javassist, the problem is that javassist is missing, and you can get the latest from the Maven repositorty.

<dependency>     <groupId>org.javassist</groupId>     <artifactId>javassist</artifactId>     <version>3.18.1-GA</version>  </dependency> 

In later editions it is fixed again

With this all works in my case,

like image 162
anquegi Avatar answered Sep 28 '22 11:09

anquegi