我在MyEclipse IDE中编写了这个hibernate程序。我想从学生表中检索数据并在控制台中显示,我想检索主键值为2的行(我输入数据库中的表) 我得到以下异常: 线程“main”中的异常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();
}
}
答案 0 :(得分:1)
您可以使用两种Session.load()方法:
load(Class theClass,Serializable id)
返回具有给定标识符的给定实体类的持久化实例,假设该实例存在。
和
load(Object object,Serializable id)
将与给定标识符关联的持久状态读取到给定的瞬态实例中。
这些方法都没有将ID作为第一个参数。
你想要
Student student = (Student) session.load(Student.class, 2);
或
Student student = new Student();
session.load(student, 2);
答案 1 :(得分:1)
而不是:
Student stu=new Student();
hsession.load(2,stu);
应该是:
Student stu = (Student) hsession.load(Student.class, 2);