Hibernate异常$$\u javassist_0无法强制转换为javassist.util.proxy.proxy
您好,我正在使用developnigjavaweb应用程序,当我尝试使用hibernate获取数据时,我遇到了下一个异常Hibernate异常$$\u javassist_0无法强制转换为javassist.util.proxy.proxy,java,hibernate,jakarta-ee,orm,proxy,Java,Hibernate,Jakarta Ee,Orm,Proxy,您好,我正在使用developnigjavaweb应用程序,当我尝试使用hibernate获取数据时,我遇到了下一个异常 java.lang.ClassCastException: com.digitalticket.model.UserType_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy <dependency> <groupId>org.hibernate</groupId> &
java.lang.ClassCastException: com.digitalticket.model.UserType_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
<exclusions>
<exclusion>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
这里是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)
这是我的密码
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 {
}
}
public T fetchAll(tClass className){
会话s=sessionFactory.getCurrentSession();
s、 beginTransaction();
试一试{
列表结果=(列表)sessionFactory.getCurrentSession()
.createCriteria(类名)
.list();
s、 getTransaction().commit();
返回结果();
}捕获(NullPointerException ex){
返回null;
}
捕获(运行时异常re){
s、 getTransaction().rollback();
投掷re;
}最后{
}
}
这是我的物品
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;
}
}
公共类用户实现java.io.Serializable{
/**
*
*/
私有静态最终长serialVersionUID=-2383716625869790753L;
私有长用户ID;
私有用户类型;
私人字符串电子邮件;
私有字符串密码;
私有字符串名称;
私家姓;
私有字符串名称;
私有集票证=新哈希集(0);
私有集组织=新哈希集(0);
公共用户(){
}
公共用户(长用户名、字符串电子邮件、字符串密码、字符串名称、,
字符串(姓氏){
this.userId=userId;
this.email=电子邮件;
this.password=密码;
this.name=名称;
this.姓氏=姓氏;
}
公共用户(长用户ID、用户类型用户类型、字符串电子邮件、字符串密码、,
字符串名称、字符串姓氏、字符串名称、,
设置门票、设置组织){
this.userId=userId;
this.userType=userType;
this.email=电子邮件;
this.password=密码;
this.name=名称;
this.姓氏=姓氏;
this.middlename=middlename;
这张票=票;
这个组织=组织;
}
公共长getUserId(){
返回this.userId;
}
public void setUserId(长userId){
this.userId=userId;
}
公共用户类型getUserType(){
返回this.userType;
}
public void setUserType(UserType UserType){
this.userType=userType;
}
公共字符串getEmail(){
返回此电子邮件;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
公共字符串getPassword(){
返回此密码;
}
public void setPassword(字符串密码){
this.password=密码;
}
公共字符串getName(){
返回此.name;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getNames(){
返回此。姓氏;
}
public void setSurname(字符串姓氏){
this.姓氏=姓氏;
}
公共字符串getMiddlename(){
返回此.middlename;
}
public void setMiddlename(字符串middlename){
this.middlename=middlename;
}
公共集getTickets(){
退票;
}
公众票(套票){
这张票=票;
}
公共集组织(){
将此文件返回给组织;
}
公共组织(集合组织){
这个组织=组织;
}
}
公共类UserType实现java.io.Serializable{
/**
*
*/
私有静态最终长serialVersionUID=-206438165274679246L;
私有长用户类型码;
私有字符串用户名;
私有集用户=新哈希集(0);
公共用户类型(){
}
公共用户类型(长userTypeCode,字符串userTypeName){
this.userTypeCode=userTypeCode;
this.userTypeName=userTypeName;
}
公共用户类型(长userTypeCode、字符串userTypeName、设置用户){
this.userTypeCode=userTypeCode;
this.userTypeName=userTypeName;
this.users=用户;
}
公共长getUserTypeCode(){
返回此.userTypeCode;
}
public void setUserTypeCode(长userTypeCode){
this.userTypeCode=userTypeCode;
}
公共字符串getUserTypeName(){
返回this.userTypeName;
}
public void setUserTypeName(字符串userTypeName){
this.userTypeName=userTypeName;
}
公共集getUsers(){
将此文件返回给用户;
}
公共void集合用户(集合用户){
this.users=用户;
}
}
这里是映射
<!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=""USER"">
<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>
我正在使用Oracle Weblogic 12c server检查您的返回类型
T
或结果列表通过将my pom.xml中的依赖项更改为旧版本4.3.4.Final进行修复
错误出现在4.3.4中。最终版本更改为
不要认为这是最好的解决方案,但我没有找到任何解决方案。我使用hibernate 4.3.5.Final,但javassist也有类似的问题,问题是缺少javassist,您可以从Maven Repository获得最新的解决方案
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.18.1-GA</version>
</dependency>
org.javassist
javassist
3.18.1-GA
在以后的版本中,它再次被修复
在我的例子中,所有这些都可以使用,在我的例子中,问题是类路径中有两个javassist
库。一个来自org.hibernate
,另一个来自org.apache.struts.xwork
。通过删除后者来解决问题。
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
<exclusions>
<exclusion>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
<exclusions>
<exclusion>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>javassist</artifactId>
<groupId>org.javassist</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.18.2-GA</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-extras</artifactId>
<version>3.0.5</version>
<exclusions>
<exclusion>
<artifactId>javassist</artifactId>
<groupId>jboss</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
<exclusions>
<exclusion>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.18.1-GA</version>
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclusions>
<module name="org.javassist"/>
</exclusions>
<local-last value="true" />
</deployment>
</jboss-deployment-structure>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-extras</artifactId>
<version>3.0.5</version>
<exclusions>
<exclusion>
<groupId>jboss</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>
<org.hibernate.version>4.2.15.Final</org.hibernate.version>
<org.pentaho.di>6.0.1.0-386</org.pentaho.di>
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-core</artifactId>
<version>${org.pentaho.di}</version>
<exclusions>
<exclusion>
<artifactId>xercesImpl</artifactId>
<groupId>xerces</groupId>
</exclusion>
<exclusion>
<artifactId>javassist</artifactId>
<groupId>javassist</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>${org.hibernate.version}</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
<exclusion>
<artifactId>ehcache-core</artifactId>
<groupId>net.sf.ehcache</groupId>
</exclusion>
</exclusions>
</dependency>
+- org.hibernate:hibernate-ehcache:jar:4.2.15.Final:compile
[INFO] | +- org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile
[INFO] | \- org.hibernate:hibernate-core:jar:4.2.15.Final:compile
[INFO] | +- antlr:antlr:jar:2.7.7:compile
[INFO] | +- (org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile - omitted for duplicate)
[INFO] | +- (dom4j:dom4j:jar:1.6.1:compile - omitted for duplicate)
[INFO] | +- org.javassist:javassist:jar:3.18.1-GA:compile
mvn dependency:tree -Dverbose >> C:\pipeout2.txt
<wls:prefer-application-packages>
<wls:package-name>javassist.*</wls:package-name>
</wls:prefer-application-packages>
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-application
xmlns:wls="http://www.bea.com/ns/weblogic/weblogic-application"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/javaee_5.xsd http://www.bea.com/ns/weblogic/weblogic-application http://www.bea.com/ns/weblogic/weblogic-application/1.0/weblogic-application.xsd">
<wls:ejb>
<wls:start-mdbs-with-application>false
</wls:start-mdbs-with-application>
</wls:ejb>
<wls:prefer-application-packages>
<wls:package-name>antlr.*</wls:package-name>
<wls:package-name>org.apache.commons.*</wls:package-name>
<wls:package-name>org.apache.xmlbeans.*</wls:package-name>
<wls:package-name>org.springframework.*</wls:package-name>
<wls:package-name>org.hibernate.*</wls:package-name>
<wls:package-name>org.joda.*</wls:package-name>
<wls:package-name>javax.persistence.*</wls:package-name>
<wls:package-name>com.google.*</wls:package-name>
<wls:package-name>com.ibm.icu.*</wls:package-name>
<wls:package-name>org.apache.axiom.*</wls:package-name>
<wls:package-name>javassist.*</wls:package-name>
</wls:prefer-application-packages>
</wls:weblogic-application>