我使用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)。
提前谢谢
答案 0 :(得分:0)
您已声明变量' name'作为私有瞬态可序列化名称;并在您的数据库表中列的类型'名称'是nchar。这是一种类型不匹配,因为Serializable是一个接口。因为这个hibernate抛出异常。
解决方案将列类型更改为Blob
而不是将名称定义为Serializable名称;以MyClass名称的其他方式定义它; MyClass也应该实现Serializable接口。