xml方式处理联合主键:

以有两个主键:id和name的student表为例。

先创建个主键类:

package com.bjsxt.hibernate;

//黑色为必写项

public class StudentPK implements java.io.Serializable{
    private int id;
    private String name;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
   
    @Override
    public boolean equals(Object o) {
        if(o instanceof StudentPK) {
            StudentPK pk = (StudentPK)o;
            if(this.id == pk.getId() && this.name.equals(pk.getName())) {
                return true;
            }
        }
        return false;
    }
   
    @Override
    public int hashCode() {
        return this.name.hashCode();
    }
}

写model:

package com.bjsxt.hibernate;

public class Student {
   
    private StudentPK pk;
   
    private int age;
    private String sex;
    private boolean good;
    public boolean isGood() {
        return good;
    }
    public void setGood(boolean good) {
        this.good = good;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public StudentPK getPk() {
        return pk;
    }
    public void setPk(StudentPK pk) {
        this.pk = pk;
    }
}

映射关系:Student.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="com.bjsxt.hibernate.Student">
       
           
        <composite-id name="pk" class="com.bjsxt.hibernate.StudentPK">
            <key-property name="id"></key-property>
            <key-property name="name"></key-property>
        </composite-id>
       
        <property name="age" />
        <property name="sex" />
        <property name="good" type="yes_no"></property>
    </class>
   
</hibernate-mapping>

Annotation(注解)处理联合主键

三种方法:

将主键类注解为@Embeddable并将model中的属性——主键类的对象注解为@Id

将主键类的对象充当的组件的属性注解为@EmbeddedId,仍然需要主键类。

将类注解为@IdClass(主键类.class ),并将该实体中所有属于主键的属性都注解为@Id

转载于:https://www.cnblogs.com/flying607/p/3475021.html

hibernate 联合主键相关推荐

  1. hibernate 联合主键 merge

    http://topic.csdn.net/u/20090722/16/1946dd91-3900-47e9-ab85-ed7db41252de.html Object obj=session.mer ...

  2. hibernate联合主键

    2019独角兽企业重金招聘Python工程师标准>>> 在日常开发中,有时候会出现要求两个或以上字段联合做主键的表,就两个字段做主键为例,用户表的联合主键为firstname和las ...

  3. 自底向上带你逆向解析hibernate联合主键

    参考1.参考2 文章目录 1 最后生成具有复合主键的表 2 People.hbm.xml文件 3 配置映射 4 java类 5 action中联合主键赋值方式 1 最后生成具有复合主键的表 数据库表的 ...

  4. hibernate ——联合主键

    接上一篇博客:http://www.cnblogs.com/tengpan-cn/p/5551323.html 主键类不需要写任何注解,表对象类使用@IdClass注解 在表对象类前面加@IdClas ...

  5. hibernate联合主键 注解方式

    转载自https://my.oschina.net/yotoo/blog/265571 方法一:主键类用@Embeddable,pojo类仍然用@Entity但是引用主键类的对象用@Id 主键pojo ...

  6. java 联合主键 注解_Hibernate的联合主键注解方式

    Hibernate联合主键注解方式,即是Hibernate中某一张表出现多个字段联合为唯一主键的情况.这时候就可以使用Hibernate的联合主键来操作.以用户表为例子,userId+userName ...

  7. oracle联合主键去重,联合主键的查询语句怎么写

    1.联合主键,SQL语句怎么写 建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍. 1.在数据库提供的GUI环境中建立(以SQL7为例). 输入表 ...

  8. Hibernate中用到联合主键的使用方法,为何要序列化,为何要重写hashcode 和 equals 方法...

    联合主键用Hibernate注解映射方式主要有三种: 第一.将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为 ...

  9. Hibernate JPA-实体类定义联合主键@IdClass、@EmbeddedId注解

    文章目录 一.复合主键@idClass.@Embeddable @idClass @Embeddable 网上实例demo 二.参考 一.复合主键@idClass.@Embeddable 可参照官方文 ...

最新文章

  1. Docker创建自己的github(Gitea)
  2. Unity开发NGUI代码实现ScrollView(放大视图)
  3. 过年了,花money的时候到了
  4. [Everyday Mathematics]20150107
  5. SpringMVC4返回json
  6. CentOS7 源码编译安装NodeJS 最新版本Shell脚本
  7. Abbott's Revenge UVA - 816 (输出bfs路径)
  8. 五面拿下阿里飞猪offer,java基础知识梳理
  9. html 公告栏 上下滚动,jQuery实现上下滚动公告栏详细实例
  10. Not creating XLA devices, tf_xla_enable_xla_devices not set
  11. 在eclipes 中配置python
  12. 80老翁谈人生(151):老翁老眼昏花,读错了一个数量级
  13. JS方式实现隐藏手机号码中间4位数
  14. hive:函数:转换函数:cast
  15. 股神涨跌求剩余股票价格
  16. 小区文化建设成居民困扰,捷径智慧物业系统提出解题方案
  17. mysql show tables报错_show tables能看到表却无法读写?
  18. 哈工大2021秋机器学习期末试题
  19. oracle只导入dmp中指定表,oracle 如何导入dmp文件到指定表空间
  20. 手机控制汽车无钥匙进入一键启动方案设计

热门文章

  1. Hive导入和导出数据
  2. 因果推断笔记——DR :Doubly Robust学习笔记(二十)
  3. SourceTree的使用
  4. oracle基础入门(四)
  5. .net core 允许跨域
  6. Ubuntu增加Swap分区大小
  7. 在新美大“创业”:KTV预定业务演进之路
  8. spring_redis整合
  9. Java中split函数的用法及使用示例
  10. Kaldi AMI数据集脚本学习4---train_mono.sh