hibernate中复合主键
来源:互联网 发布:快速备案淘宝交易 编辑:程序博客网 时间:2024/05/05 11:35
复合主键:一张表的多个字段组合构成这张表的主键,这个主键就叫复合主键。
在hibernate中配置复合主键:
Hibernate复合主键的编写有两种情况:
1、将复合主键各字段定义为私有属性。
2、将复合主键字段抽取出来定义一个主键类(暂且这样称呼),在实体类中包含主键类即可。(推荐使用这种方法)
映射文件的编写:
复合主键使用:
方式一:
<composite-id>
<key-property name=”” column=”” type=””/>
<key-property name=”” column=”” type=””/>
</composite-id>
由几个字段构成添加几个<key-property>标签。
name是私有属性名,
column是映射的字段名(可省略,省略后将以私有属性名作为字段名),
type是数据的类型
方式二:
<composite-idname=”” class=””>
<key-property name=”” column=”” type=””/>
<key-property name=”” column=”” type=””/>
</composite-id>
<composite-idname=”” class=””> name是主键类在实体类的私有属性名,class是主键类的类名。
实际操作:
User是实体类,Name是主键类
方式一:
保存的时候:session.save(User.class,user);
方式二:
保存的时候:实体类对象先保存主键类,然后session保存实体类对象。 user.setName(name);,session.save(user);
查询的时候:需要制定主键信息,session.get(实体类对象,主键类对象)。
session.get(user,name);
还有一种说法:
在hibernate中有复合主键的类必须满足两个条件:
1、类必须显现serializable接口。
2、重写equals和hashCode方法。
对于为什么要满足以上的条件,我找了一些资料,原因是hibernate将此作为标识来区分复合主键类和其它实体类。(觉得这样的解释有点牵强,希望有高手解答)
其他的配置和注意细节和上面的说法一样。
equals和hasCode方法的编写。
equal方法
publicboolean equals(Object obj){
if(this==obj){
returntrue;
}
if(!obj.instanceOf(Person)){
return false;
}
returnsuper.equals(obj);
}
hasCode方法
publicint hashCode(){
returnsuper.hashCode();
}
- hibernate中复合主键
- Hibernate中复合主键映射
- Hibernate中复合主键的配置
- Hibernate中复合主键的配置
- Hibernate中复合主键的配置
- Hibernate中复合主键的配置
- Hibernate中复合主键的用法
- hibernate中复合主键的使用方法
- hibernate 在mysql中复合主键应用
- Hibernate复合主键
- hibernate 复合主键
- hibernate复合主键
- Hibernate复合主键例子
- Hibernate复合主键
- Hibernate复合主键
- Hibernate 复合主键
- hibernate复合主键映射
- Hibernate复合主键映射
- 2011年12月份总结:学会做事的人
- 开机校对系统时间(xp)
- 协同开发好帮手,SVN开发环境快速搭建
- 集合类的说明和区别
- URL编码概要
- hibernate中复合主键
- android HTTP 通信, XML 解析, 通过 Hander 实现异步消息处理
- hibernate主键生成策略详细说明
- C#对输入框的约束
- 在Linux下使用JavaMail发送邮件报错:javax.mail.MessagingException: Unknown SMTP host:
- Linux平台Cpu使用率的计算
- Method方法使用
- MIT牛人解说数学体系
- 系统平均负载(Load average)与CPU利用率