博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于hibernate查询映射时无法反序列化问题
阅读量:5054 次
发布时间:2019-06-12

本文共 2314 字,大约阅读时间需要 7 分钟。

org.springframework.orm.hibernate3.HibernateSystemException: could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize

以上是报错信息,网上查到的是说字段类型没有设置对应的类型,或者类型设置错误,这里根据我自己的实际情况,做一下补充情况

当在xml文件中设置字段的类型为枚举类型时,不能直接设置为枚举对象类,比如:

这样就不对了,无法解析,枚举类型应该要通过枚举类来解析,如下:

EnumUserType类如下:

package com.**.**.dao.usertype;import java.io.Serializable;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Types;import org.hibernate.HibernateException;import org.hibernate.usertype.UserType;public class EnumUserType
> implements UserType { private Class
clacz = null; protected EnumUserType(Class
c) { this.clacz = c; } private static final int[] SQL_TYPES = { Types.VARCHAR }; public int[] sqlTypes() { return SQL_TYPES; } public Class
returnedClass() { return clacz; } public Object nullSafeGet( ResultSet resultSet, String[] names, Object owner ) throws HibernateException, SQLException { String name = resultSet.getString( names[0] ); E result = null; if ( !resultSet.wasNull() ) { result = Enum.valueOf( clacz, name ); } return result; } public void nullSafeSet( PreparedStatement preparedStatement, Object value, int index ) throws HibernateException, SQLException { if ( null == value ) { preparedStatement.setNull( index, Types.VARCHAR ); } else { preparedStatement.setString( index, ((Enum
) value).name() ); } } public Object deepCopy( Object value ) throws HibernateException { return value; } public boolean isMutable() { return false; } public Object assemble( Serializable cached, Object owner ) throws HibernateException { return cached; } public Serializable disassemble( Object value ) throws HibernateException { return (Serializable) value; } public Object replace( Object original, Object target, Object owner ) throws HibernateException { return original; } public int hashCode( Object x ) throws HibernateException { return x.hashCode(); } public boolean equals( Object x, Object y ) throws HibernateException { if ( x == y ) return true; if ( null == x || null == y ) return false; return x.equals( y ); }}

  

以上仅是这类错误的一种原因,记录一下

 

转载于:https://www.cnblogs.com/binTke170120/p/9121790.html

你可能感兴趣的文章
中国象棋程序的设计与实现(一)--项目截图
查看>>
十一月书稿
查看>>
两只小熊队高级软件工程第九次作业敏捷冲刺4
查看>>
推荐一个好用的虚拟主机
查看>>
ulimit
查看>>
php代码执行顺序
查看>>
php 写入数据到MySQL以及从MySQL获取数据,页面出现乱码的解决方法
查看>>
MYSQL视图的学习笔记
查看>>
爬虫基础
查看>>
laravel常用artisan命令
查看>>
130292015038 张雅周 第一章作业
查看>>
获取文件字段并生产一个新的页面
查看>>
IIS 添加 MIME
查看>>
[转]协同管理系统
查看>>
安装了OFFICE2007,每次打开word时都显示配置microsoft office professional plus 解决方法...
查看>>
联合体和结构体的区别
查看>>
相同文件名引发的教训
查看>>
android调用系统相机并获取图片
查看>>
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
查看>>
Spark共享变量(广播变量、累加器)
查看>>