1

我在 MyEclipse IDE 中编写了这个休眠程序。我想从学生表中检索数据并在控制台中显示,我想检索主键值为 2 的行(正如我在数据库中的表中输入的那样)我得到以下异常:线程“主”org.hibernate.MappingException中的异常:未知实体:java.lang.Integer

程序:

package info.inetsolv;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class HibJavaPrgm {
public static void main(String[] args) {

 Configuration cfg = new Configuration();
 cfg.configure();
 SessionFactory sf = cfg.buildSessionFactory();
 Session hsession = sf.openSession();
 Transaction ts = hsession.beginTransaction();

 Student stu=new Student();

 hsession.load(2,stu);

 ts.commit();
 hsession.close();
 sf.close();
}

}
4

2 回答 2

2

您可以使用两种Session.load()方法:

加载(类 theClass,可序列化 id)

返回具有给定标识符的给定实体类的持久实例,假设该实例存在。

加载(对象对象,可序列化 id)

将与给定标识符关联的持久状态读入给定的瞬态实例。

这些方法都没有将 ID 作为第一个参数。

你要

Student student = (Student) session.load(Student.class, 2);

或者

Student student = new Student();
session.load(student, 2);
于 2012-12-25T10:54:48.107 回答
2

代替:

Student stu=new Student();

hsession.load(2,stu);

它应该是:

Student stu = (Student) hsession.load(Student.class, 2);
于 2012-12-25T10:55:17.443 回答