hibernate基础16:组合主键2
Posted 来临
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate基础16:组合主键2相关的知识,希望对你有一定的参考价值。
1、Java实体bean类
package com.project.pojo; import java.io.Serializable; public class ResultPk implements Serializable{ private int stuid;//学生id private int subid;//学科id public int getStuid() { return stuid; } public void setStuid(int stuid) { this.stuid = stuid; } public int getSubid() { return subid; } public void setSubid(int subid) { this.subid = subid; } }
package com.project.pojo; import java.io.Serializable; /** * 如果组合索引是类的属性时,该类必须实现Serializable * @author Administrator * */ public class Result implements Serializable{ private ResultPk id; private double score; public ResultPk getId() { return id; } public void setId(ResultPk id) { this.id = id; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } }
2、配置hbm.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.project.pojo"> <class name="Result" table="t_result"> <!-- 组合索引映射 --> <composite-id name="id" class="ResultPk"> <key-property name="stuid"/> <key-property name="subid"/> </composite-id> <property name="score" /> </class> </hibernate-mapping>
3、测试
package com.project.test;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.project.pojo.Result;
import com.project.pojo.ResultPk;
import com.project.util.HibernateUtil;
public class HibernateTest {
Session session = null;
Transaction ts = null;
@Before
public void setUp(){
session = HibernateUtil.getSession();
ts = session.beginTransaction();
}
@After
public void tearDown(){
HibernateUtil.closeSession();
}
@Test
public void testCreateDB(){
Configuration cfg = new Configuration().configure();
//使得hibernate映射信息转换为数据库识别的dll语言
SchemaExport se = new SchemaExport(cfg);
//第一个参数:是否打印dll语句
//第二个参数:是否将dll到数据库中执行
se.create(true, true);
}
@Test
public void testInit(){
try {
ResultPk pk = new ResultPk();
pk.setStuid(1);
pk.setSubid(1);
Result r = new Result();
r.setId(pk);
r.setScore(70.5);
session.save(r);
ts.commit();
} catch (Exception e) {
if(ts!=null)ts.rollback();
e.printStackTrace();
}
}
@Test
public void testSelect(){
ResultPk pk = new ResultPk();
pk.setStuid(1);
pk.setSubid(1);
Result r = (Result) session.get(Result.class, pk);
System.out.println(r.getScore());
}
}
以上是关于hibernate基础16:组合主键2的主要内容,如果未能解决你的问题,请参考以下文章