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()メソッドは 2 つあります。

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);
于 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 に答える