Java 无法摆脱org.hibernate.type.SerializationException:无法反序列化
我在使用hibernate的测试java项目中得到了标题错误。 在类似的帖子上,没有什么能帮助我解决这个问题 有关类别为: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
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”作为测试。我在添加之前和之后都有例外。为了避免混淆,我将把它从原来的帖子中删除。