0

私のテーブルは次のとおりです。

sid    fname   lname    subject  phno
---    -----   -----    -------- -----
1      vvk     v        math     4444
1      vvk     v        read     4444
2      hari    h        math     5555
2      hari    h        read     5555
3      kalyan  k        math     6666
3      kalyan  k        read     6666

次のように、生徒が科目数学または読解を取ったことから単一のレコードを表示するにはどうすればよいですか。

1      vvk     v        math     4444

上記の出力を取得するために休止状態でクエリを作成する方法は?

テーブルには、sid フィールドと subject フィールドの複合 ID が含まれています

Mysql マッピング ファイルは

Student.hbm.xml:

  <composite-id>
  <key-property name="sid" column="sid" type="string"/>
  <key-property name="subject" column="subject" type="string"/>
  </composite-id>
4

2 に答える 2

0

PK が [sid, subject] の場合、Student エンティティの ID はこれら 2 つのフィールドを含むクラスである必要があり、非複合主キーの場合と同じ方法で使用できます。

StudentKey key = new StudentKey(someSid, someSubject);
Student student = (Student) session.get(Student.class, key);

これが十分に明確でない場合は、質問を編集して、このテーブルにマッピングされたエンティティをどのように定義したかを示してください。

于 2013-06-29T10:57:10.613 に答える
0

この種の複合キーでは、インスタンスを作成しStudent、キーの属性を設定するだけです。次に、メソッドを使用して目的の行をインスタンスにロードできますsession.load()。次の例に従います。

Student student = new Student();
student.setSid("1");
student.setSubject("math");
session.load(Student.class, student);

を呼び出すとsession.load(Student.class, student)、この学生の永続的な状態がインスタンスに読み込まれstudentます。

于 2013-06-29T11:35:28.953 に答える