不可能摆脱org.hibernate.type.SerializationException:无法反序列化

时间:2015-07-11 12:41:55

标签: java hibernate

我使用hibernate在测试java项目上得到标题错误。 类似帖子上的任何内容都没有帮助我解决这个问题。

有关的课程是:

package org.entities;

// default package
// Generated Jul 11, 2015 12:18:25 PM by Hibernate Tools 4.0.0

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * Rats generated by hbm2java
 */

@Entity
@Table(name = "RATS")
public class Rats implements java.io.Serializable {

    /**
     * 
     */
    private   static final long serialVersionUID = 1L;
    private   int id;
    private Serializable name;
    private   int age;

    public Rats() {
    }

    public Rats(int id, Serializable name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    @Id
    @Column(name = "ID", unique = true, nullable = false)
    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Column(name = "Name", nullable = false)
    public Serializable getName() {
        return this.name;
    }

    public void setName(Serializable name) {
        this.name = name;
    }

    @Column(name = "Age", nullable = false)
    public int getAge() {
        return this.age;
    }

    public void setAge(int age) {
        this.age = age;
    }


    @Override
    public String toString() {
        return "My name is " + name + ", anad I am " + age + " years old.";
    }


}

此文件由eclipse自动生成(toString方法除外)。 如果我在列出的超类中用“String”替换“serializable”,它将起作用。但我相信你的大师们会找到正确的理由,这样我就不需要这样做了。

如果相关,“名称”字段对应于数据库中的nchar(50)。

提前谢谢

1 个答案:

答案 0 :(得分:0)

您已声明变量' name'作为私有瞬态可序列化名称;并在您的数据库表中列的类型'名称'是nchar。这是一种类型不匹配,因为Serializable是一个接口。因为这个hibernate抛出异常。

解决方案将列类型更改为Blob

而不是将名称定义为Serializable名称;以MyClass名称的其他方式定义它; MyClass也应该实现Serializable接口。

Refer this

this one also