首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果存在重复记录,如何使用hibernate显示数据库中的单个记录

如果存在重复记录,如何使用hibernate显示数据库中的单个记录
EN

Stack Overflow用户
提问于 2013-06-29 17:48:47
回答 2查看 92关注 0票数 0

我的表格是:

代码语言:javascript
复制
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

我如何显示学生选修数学或阅读的单个记录,如下所示:

代码语言:javascript
复制
1      vvk     v        math     4444

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

该表包含sid和主题字段上的复合id

Mysql映射文件是

Student.hbm.xml:

代码语言:javascript
复制
  <composite-id>
  <key-property name="sid" column="sid" type="string"/>
  <key-property name="subject" column="subject" type="string"/>
  </composite-id>
EN

回答 2

Stack Overflow用户

发布于 2013-06-29 18:57:11

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

代码语言:javascript
复制
StudentKey key = new StudentKey(someSid, someSubject);
Student student = (Student) session.get(Student.class, key);

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

票数 0
EN

Stack Overflow用户

发布于 2013-06-29 19:35:29

使用这种组合键,只需创建一个Student实例并设置键的属性。然后,您可以使用session.load()方法将所需的行加载到实例中。请按照下面的示例操作:

代码语言:javascript
复制
Student student = new Student();
student.setSid("1");
student.setSubject("math");
session.load(Student.class, student);

session.load(Student.class, student)的调用将把这个学生的持久状态加载到student实例中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17378882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档