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 和主题字段的复合 id

Mysql 映射文件是

学生.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

使用这种复合键,只需创建一个实例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 回答
0

如果 PK 是 [sid, subject],那么 Student 实体的 ID 应该是包含这两个字段的类,并且您可以像使用非复合主键一样使用它:

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

如果这还不够清楚,请编辑您的问题并显示您如何定义映射到此表的实体。

于 2013-06-29T10:57:10.613 回答