Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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
Java 无法摆脱org.hibernate.type.SerializationException:无法反序列化_Java_Hibernate - Fatal编程技术网

Java 无法摆脱org.hibernate.type.SerializationException:无法反序列化

Java 无法摆脱org.hibernate.type.SerializationException:无法反序列化,java,hibernate,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.persis

我在使用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方法除外)。 如果我在列出的beyond类中将“serializable”替换为“String”,它将起作用。但我相信你们大师会找到正确的理由,这样我就不需要做这个黑客了

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


Thx预先

您已将变量“name”声明为私有瞬态可序列化名称;在数据库表中,“Name”列的类型为nchar。这是一种类型不匹配,因为Serializable是一个接口。因此,hibernate正在引发异常

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

而不是将名称定义为可序列化名称;以其他方式定义它,如MyClass name;MyClass还应该实现可序列化接口


并且

您已经将变量“name”声明为私有的瞬态可序列化名称;在数据库表中,“Name”列的类型为nchar。这是一种类型不匹配,因为Serializable是一个接口。因此,hibernate正在引发异常

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

而不是将名称定义为可序列化名称;以其他方式定义它,如MyClass name;MyClass还应该实现可序列化接口


那么,为什么不希望它是一个
字符串呢?另外,为什么字段是瞬态的?在我看来,你应该去掉那个Eclipse插件。我实际上添加了“transient”作为测试。我在添加之前和之后都有例外。我将从原始帖子中删除它以避免混淆。那么,为什么您不希望它是一个
字符串
?另外,为什么字段是瞬态的?在我看来,你应该去掉那个Eclipse插件。我实际上添加了“transient”作为测试。我在添加之前和之后都有例外。为了避免混淆,我将把它从原来的帖子中删除。