如果使用hibernate可以获得重复记录,如何在数据库中显示单个记录

时间:2013-06-29 09:48:47

标签: hibernate

我的表是:

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

如何在hibernate中编写查询以获得上述输出?

该表包含sid和subject字段的复合ID

Mysql Mapping File

Student.hbm.xml:

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

2 个答案:

答案 0 :(得分:0)

如果PK是[sid,subject],那么Student实体的ID应该是包含这两个字段的类,并且您将使用与使用非复合主键相同的方式:< / p>

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

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

答案 1 :(得分: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实例中。