我的表是:
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
<composite-id>
<key-property name="sid" column="sid" type="string"/>
<key-property name="subject" column="subject" type="string"/>
</composite-id>
答案 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
实例中。