美文网首页
hibernate----联合主键映射

hibernate----联合主键映射

作者: 倬永 | 来源:发表于2017-05-25 21:19 被阅读0次

以课程表和学生表为例,课程表有课程编码和课程名称,学生表有学号和姓名,当学号和课程编码都确定时,就可以确定该学生这门课程的分数。
1.创建学生类和课程表类,以及把学生的学号,课程的编号组成一个实体类,共三个实体类

(1)学生类 student.class
package entity;

public class Student {
private int num;
private String name;

public int getNum() {
    return num;
}
public void setNum(int num) {
    this.num = num;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
(2)课程表类(感觉这个类没有用到,其实可以不写) Test.class

package entity;

public class Test {

private int Tnum;
private String classname;
public int getTnum() {
    return Tnum;
}
public void setTnum(int tnum) {
    Tnum = tnum;
}
public String getClassname() {
    return classname;
}
public void setClassname(String classname) {
    this.classname = classname;
}

}
(3) 主键类 Pass.class
package entity;

import java.io.Serializable;

public class Mainkey implements Serializable{

private static final long serialVersionUID = 1L;
private int num;
private int Tnum;
public int getNum() {
    return num;
}
public void setNum(int num) {
    this.num = num;
}
public int getTnum() {
    return Tnum;
}
public void setTnum(int tnum) {
    Tnum = tnum;
}

}
}
2.配置实体类的映射文件
(1)pass.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="entity">

<class name="Pass" table="Pass">
   <composite-id name="mainkey">
   <key-property  name="num" type="integer" ></key-property>
    <key-property  name="Tnum" type="integer"></key-property>
   </composite-id>
    <property name="grade" type="integer"/>
   
</class>

</hibernate-mapping>

3.配置hibernate.cfg.xml
其他的配置相同,主要是把pass类的配置文件加进去
这一句 “ <mapping resource="entity/Pass.hbm.xml"/>”

4.写测试类
package text;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import entity.Mainkey;

import entity.Pass;

public class Text02 {

public static void main(String[] args) {
    Configuration cfg=new Configuration().configure("hibernate.cfg.xml");
    SessionFactory sessionFactory=cfg.buildSessionFactory();
    Session session=sessionFactory.openSession();
    Transaction ts=session.beginTransaction();
    
    Mainkey mainkey=new Mainkey();
    mainkey.setNum(4017);
    mainkey.setTnum(10001);
    
    Pass pass=new Pass();
    pass.setGrade(90);
    pass.setMainkey(mainkey);
    session.save(pass);
    ts.commit();
    session.close();
    
    
    
    
    
}

}

相关文章

  • hibernate----联合主键映射

    以课程表和学生表为例,课程表有课程编码和课程名称,学生表有学号和姓名,当学号和课程编码都确定时,就可以确定该学生这...

  • Hibernate 注解方式设置联合主键

    使用 Annotation 设置联合主键有三种方式: 1. 方法一 主键类:将联合主键的字段单独放在类中,该类实现...

  • mysql 联合主键

    联合主键:把两个列看成是一个整体,这个整体是不为空,唯一,不重复 1.创建表的同时创建联合主键 语法1 语法2 2...

  • Django设置联合主键

    在django项目中,我们要设置联合主键时,需要写一个类,如: 这样,联合主键就设置完了。

  • 使用pt-online-schema-change 修改主键需注

    场景:某个表上已是联合主键,后来需要修改成 自增长的id 主键。 思路:1.先删除原表的联合主键2.再添加id 列...

  • Hibernate 菜鸟教程 8 复合主键

    复合主键 复合主键的意思就是2个字段同时为主键不使用无业务含义的自增id作为主键 模型对象Airline 映射文件...

  • mysql中的键和索引

    一、主键 索引 关系 1.主键:主键的唯一作用就是唯一标识表中的某一行数据。分为单一主键和联合主键: 单一主键:只...

  • Oracle 基础命令合集

    一 、视图 1、 创建视图 (联立两个表) 二、主键 1、 添加联合主键 后面补充 也可以在建表的时候就制定联合主...

  • hibernate

    AQ#说明 代码 基础 主键/联合主键 继承体系中生成表的情况 InheritanceType.JOINED 继承...

  • mysql联合索引的感悟

    1、联合索引不要以主键开头,不然联合索引和主键索引作用是一样的 2、当你的查询sql where条件中用到的多个字...

网友评论

      本文标题:hibernate----联合主键映射

      本文链接:https://www.haomeiwen.com/subject/lzgzxxtx.html