hibernate 联合主键
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 联合主键相关推荐
- hibernate 联合主键 merge
http://topic.csdn.net/u/20090722/16/1946dd91-3900-47e9-ab85-ed7db41252de.html Object obj=session.mer ...
- hibernate联合主键
2019独角兽企业重金招聘Python工程师标准>>> 在日常开发中,有时候会出现要求两个或以上字段联合做主键的表,就两个字段做主键为例,用户表的联合主键为firstname和las ...
- 自底向上带你逆向解析hibernate联合主键
参考1.参考2 文章目录 1 最后生成具有复合主键的表 2 People.hbm.xml文件 3 配置映射 4 java类 5 action中联合主键赋值方式 1 最后生成具有复合主键的表 数据库表的 ...
- hibernate ——联合主键
接上一篇博客:http://www.cnblogs.com/tengpan-cn/p/5551323.html 主键类不需要写任何注解,表对象类使用@IdClass注解 在表对象类前面加@IdClas ...
- hibernate联合主键 注解方式
转载自https://my.oschina.net/yotoo/blog/265571 方法一:主键类用@Embeddable,pojo类仍然用@Entity但是引用主键类的对象用@Id 主键pojo ...
- java 联合主键 注解_Hibernate的联合主键注解方式
Hibernate联合主键注解方式,即是Hibernate中某一张表出现多个字段联合为唯一主键的情况.这时候就可以使用Hibernate的联合主键来操作.以用户表为例子,userId+userName ...
- oracle联合主键去重,联合主键的查询语句怎么写
1.联合主键,SQL语句怎么写 建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍. 1.在数据库提供的GUI环境中建立(以SQL7为例). 输入表 ...
- Hibernate中用到联合主键的使用方法,为何要序列化,为何要重写hashcode 和 equals 方法...
联合主键用Hibernate注解映射方式主要有三种: 第一.将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为 ...
- Hibernate JPA-实体类定义联合主键@IdClass、@EmbeddedId注解
文章目录 一.复合主键@idClass.@Embeddable @idClass @Embeddable 网上实例demo 二.参考 一.复合主键@idClass.@Embeddable 可参照官方文 ...
最新文章
- Docker创建自己的github(Gitea)
- Unity开发NGUI代码实现ScrollView(放大视图)
- 过年了,花money的时候到了
- [Everyday Mathematics]20150107
- SpringMVC4返回json
- CentOS7 源码编译安装NodeJS 最新版本Shell脚本
- Abbott's Revenge UVA - 816 (输出bfs路径)
- 五面拿下阿里飞猪offer,java基础知识梳理
- html 公告栏 上下滚动,jQuery实现上下滚动公告栏详细实例
- Not creating XLA devices, tf_xla_enable_xla_devices not set
- 在eclipes 中配置python
- 80老翁谈人生(151):老翁老眼昏花,读错了一个数量级
- JS方式实现隐藏手机号码中间4位数
- hive:函数:转换函数:cast
- 股神涨跌求剩余股票价格
- 小区文化建设成居民困扰,捷径智慧物业系统提出解题方案
- mysql show tables报错_show tables能看到表却无法读写?
- 哈工大2021秋机器学习期末试题
- oracle只导入dmp中指定表,oracle 如何导入dmp文件到指定表空间
- 手机控制汽车无钥匙进入一键启动方案设计