有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

mysql Java Hibernate异常:无法反序列化

刚刚在这里冬眠。我正在尝试从MYSQL数据库中检索对象列表,其中一列是BLOB

项目。爪哇

public class Item implements Serializable{

    private static final long serialVersionUID = -7040387542178744607L;
    private int id;
    private String name;     
    private User owner;
    private int rating;
    private String review;
    private byte[] coverImage;  //getters, setters, etc.

}

伊梅达奥。爪哇

public List<Item> getAllItems() {
        Session s = sessionFactory.getCurrentSession();
        Query q = s.createQuery("from Item");
        List<Item> items = new ArrayList<Item>();

        items = q.list();

        return items;
    }

项目。哈佛商学院。xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="myApp.Item" table="ITEM" >     
        <id name="id" column="ITEM_ID" >
            <generator class="native" />
        </id>
        <many-to-one name="owner" class="myApp.User"
            column="OWNER_ID" unique="true" not-null="true"
            cascade="all" />
        <property name="name" column="NAME" ></property>
        <property name="rating" column="RATING" ></property>
        <property name="review" column="REVIEW" ></property>
        <property name="coverImage" column="COVER_IMAGE"></property>
        </subclass>
    </class>
</hibernate-mapping>

堆栈跟踪:

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.type.SerializationException: could not deserialize
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

org.hibernate.type.SerializationException: could not deserialize
    org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:262)
    org.hibernate.internal.util.SerializationHelper.deserialize(SerializationHelper.java:306)
    org.hibernate.type.descriptor.java.SerializableTypeDescriptor.fromBytes(SerializableTypeDescriptor.java:131)
    org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:117)
    org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:39)
    org.hibernate.type.descriptor.sql.VarbinaryTypeDescriptor$2.doExtract(VarbinaryTypeDescriptor.java:67)
    org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:65)
    org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:269)
    org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:265)
    org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:238)
    org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:357)
    org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2705)
    org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1544)
    org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1476)
    org.hibernate.loader.Loader.getRow(Loader.java:1376)
    org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:643)
    org.hibernate.loader.Loader.doQuery(Loader.java:853)
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:292)
    org.hibernate.loader.Loader.doList(Loader.java:2381)
    org.hibernate.loader.Loader.doList(Loader.java:2367)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2197)
    org.hibernate.loader.Loader.list(Loader.java:2192)
    org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:470)
    org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
    org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
    org.hibernate.internal.SessionImpl.list(SessionImpl.java:1248)
    org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
    ar.edu.uces.progweb2.merlo2.dao.ItemDao.getAllItems(ItemDao.java:42)
    ar.edu.uces.progweb2.merlo2.dao.ItemDao$$FastClassByCGLIB$$913d8323.invoke(<generated>)
    net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
    org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
    ar.edu.uces.progweb2.merlo2.dao.ItemDao$$EnhancerByCGLIB$$8a257e3c.getAllItems(<generated>)
    ar.edu.uces.progweb2.merlo2.controller.persistence.ItemController.list(ItemController.java:58)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:498)
    org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.io.EOFException
    java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2353)
    java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2822)
    java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:804)
    java.io.ObjectInputStream.<init>(ObjectInputStream.java:301)
    org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:328)
    org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:318)
    org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:237)
    org.hibernate.internal.util.SerializationHelper.deserialize(SerializationHelper.java:306)
    org.hibernate.type.descriptor.java.SerializableTypeDescriptor.fromBytes(SerializableTypeDescriptor.java:131)
    org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:117)
    org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:39)
    org.hibernate.type.descriptor.sql.VarbinaryTypeDescriptor$2.doExtract(VarbinaryTypeDescriptor.java:67)
    org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:65)
    org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:269)
    org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:265)
    org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:238)
    org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:357)
    org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2705)
    org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1544)
    org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1476)
    org.hibernate.loader.Loader.getRow(Loader.java:1376)
    org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:643)
    org.hibernate.loader.Loader.doQuery(Loader.java:853)
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:292)
    org.hibernate.loader.Loader.doList(Loader.java:2381)
    org.hibernate.loader.Loader.doList(Loader.java:2367)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2197)
    org.hibernate.loader.Loader.list(Loader.java:2192)
    org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:470)
    org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
    org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
    org.hibernate.internal.SessionImpl.list(SessionImpl.java:1248)
    org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
    ar.edu.uces.progweb2.merlo2.dao.ItemDao.getAllItems(ItemDao.java:42)
    ar.edu.uces.progweb2.merlo2.dao.ItemDao$$FastClassByCGLIB$$913d8323.invoke(<generated>)
    net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
    org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
    ar.edu.uces.progweb2.merlo2.dao.ItemDao$$EnhancerByCGLIB$$8a257e3c.getAllItems(<generated>)
    ar.edu.uces.progweb2.merlo2.controller.persistence.ItemController.list(ItemController.java:58)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:498)
    org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

旁注:我知道注释有更多的文档可用,但这是一些遗留代码,我必须简短地维护,升级它不是我的责任。我真的非常感谢你在这方面的帮助。提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    答案非常简单。我之前映射了一个子类,但最终我不需要它,我忘记了删除结束标记。 哎呀,冬眠异常不是不言自明的吗?感谢Matteo的支持