码迷,mamicode.com
首页 > Web开发 > 详细

hibernate基础16:组合主键2

时间:2020-05-24 20:51:05      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:数据   类的属性   double   imp   参数   oid   sys   close   mini   

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

标签:数据   类的属性   double   imp   参数   oid   sys   close   mini   

原文地址:https://www.cnblogs.com/chai-blogs/p/12952439.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!