Hibernate组合主键映射
2019-06-10
| 持久化 | 阅读 | 289 字 | 1 分钟1、编写组合主键的类
- 该类必须实现
Serializable
接口;
- 生成对应的
get/set
方法;
- 最好实现
equals
和hashCode
方法;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class ScoreId implements Serializable{ private int stuId; private int subjectId; public int getStuId() { return stuId; } public void setStuId(int stuId) { this.stuId = stuId; } public int getSubjectId() { return subjectId; } public void setSubjectId(int subjectId) { this.subjectId = subjectId; } }
|
2、在主类中引用对应组件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
public class Score { private ScoreId scoreId; private double result; public ScoreId getScoreId() { return scoreId; } public void setScoreId(ScoreId scoreId) { this.scoreId = scoreId; } public double getResult() { return result; } public void setResult(double result) { this.result = result; } }
|
3、映射文件的编写
1 2 3 4 5 6 7 8 9
| <hibernate-mapping package="cn.siggy.pojo"> <class name="Score"> <composite-id name="scoreId" class="ScoreId"> <key-property name="stuId"></key-property> <key-property name="subjectId"></key-property> </composite-id> <property name="result"/> </class> </hibernate-mapping>
|
4、测试代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| @Test public void testSave() throws HibernateException{ Session session = null; Transaction tx = null; try{ session = HibernateUtil.getSession(); tx = session.beginTransaction();
Score s = new Score(); ScoreId sid = new ScoreId(); sid.setStuId(2); sid.setSubjectId(6); s.setResult(89); s.setScoreId(sid);
session.save(s);
tx.commit();
}catch (HibernateException e) { if(tx!=null) tx.rollback(); e.printStackTrace(); throw e; }finally{ HibernateUtil.closeSession(); } }
|
本文标题:Hibernate组合主键映射
文章作者:foreverSFJ
发布时间:2019-06-10 17:53:58
最后更新:2019-06-10 17:53:58
原始链接:Notes/Java/Persistence/Hibernate/组合主键映射.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!
分享