Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 冬眠:“;无法从结果集中读取列值。。。无法反序列化“;_Hibernate_Serialization - Fatal编程技术网

Hibernate 冬眠:“;无法从结果集中读取列值。。。无法反序列化“;

Hibernate 冬眠:“;无法从结果集中读取列值。。。无法反序列化“;,hibernate,serialization,Hibernate,Serialization,我有一个Java类,我想将其持久化到数据库: public class ClassA implements Serializable { // // other fields not shown // private ObjectType objectType; // an enum that indicates the actual class stored in the "object" field private Object object; }

我有一个Java类,我想将其持久化到数据库:

public class ClassA implements Serializable {
    //
    // other fields not shown
    //

    private ObjectType objectType;  // an enum that indicates the actual class stored in the "object" field
    private Object object;
}
以下是Hibernate映射文件:

<hibernate-mapping default-lazy="false">
    <class name="x.y.z.ClassA" table="ClassA">
        <!--
           other properties removed
        -->

        <property name="objectType" column="OBJECTTYPE">
            <type name="org.hibernate.type.EnumType">
                <param name="enumClass">
                    x.y.z.ClassA$ObjectType
                </param>
                <param name="type">12</param>
            </type>
        </property>

        <property name="object" column="OBJECT" type="serializable"/>
    </class>
</hibernate-mapping>
如果Hibernate将对象存储在longblob列中时对象没有被压缩,那么我猜这就是导致“无法反序列化”错误的原因。我知道它大于255字节,但MySQL Workbench说它有255字节长,所以该对象一定是因为某种原因被截断了


但是如果对象正在被压缩,那么Hibernate可能无法对其进行反序列化,因为它只是一个java.lang.object类型,并且不知道实际的对象类型是什么。如果是这种情况,那么有没有办法为Hibernate编写自定义反序列化程序?因为实际对象类型由“objectType”字段指示,所以自定义反序列化程序可以检查“objectType”字段,然后知道如何反序列化“object”字段。

结果是Hibernate默认将longblob列的最大大小设置为255字节。我将映射文件中的行更改为:

<property name="object" column="OBJECT" type="serializable" length="2147483647"/>

这就解决了问题

<property name="object" column="OBJECT" type="serializable" length="2147483647"/>