Hibernate一对多(多对一)外键设置汇总
我打算在角色表(role)中添加一个帐号表(account)的外键(accountId),步骤如下:
1、首先在角色表(role)中添加列。
添加语句:alter table role add(accountid varchar2(50));
添加语句时注意事项:单词之间的空格必须为英文空格,不可为中文空格;accountId添加后不可
设为主键!
2、将accountId这一列设为外键,链接角色表(role)和帐号表(account)。
添加语句:alter table role add constraint fk_role_account foreign key(accountId)
references account(id) on delete cascade;
或:
alter table role add constraint fk_role_account foreign key(accountId) references
account(id) on delete set null;
解释:constraint:约束,即外键约束。
fk_role_account:外键名称。
foreign key(accountId):将accountId设为外键。
references:参照。
account(id):account,帐号表明;id,外键accountId的参照列。
on delete cascade和on delete set null:两个要害字,第一个的意思就是当帐号删除的时候,
所有角色表中accountId与删除帐号id相同的角色信息删除;第二个的意思就是当帐号删除的时候,所
有角色表中accountId与删除帐号id相同的角色accountId这一列清空。
3、在role.hbm.xml配置文件中添加多对一关系
代码如下:
<many-to-one name="account" class="com.yuanit.app.model.Account" update="false"
insert="false" fetch="select">
<column name="ACCOUNTID" length="50" />
</many-to-one>
解释:
<many-to-one name="对应一对多中一的实体类的集合的属性" class="一对多中一的实体类
的类名" update="false" insert="false" fetch="select">
<column name="对应其外键的字段" length="50" />
</many-to-one>
4、在account.hbm.xml配置文件中添加一对多关系
代码如下:
<set name="roles" inverse="true" lazy="false" >
<key>
<column name="ACCOUNTID" length="50"/>
</key>
<one-to-many class="com.yuanit.app.model.Role"/>
</set>
解释:
<set name="对应一对多中多的实体类的集合的属性" inverse="true" lazy="false" >
<key>
<column name="对应其外键的字段" length="50"/>
</key>
<one-to-many class="一对多中多的实体类的类名"/>
</set>
5、在role的model中添加account集合及其set/get方法:
private Account account;
public void setAccount(Account account) {
this.account = account;
}
public Account getAccount() {
return account;
}
6、在account的model中添加roles集合及其set/get方法:
private Set<Role> roles = new HashSet<Role>(0);
public void setRoles(Set<Role> roles) {
this.roles = roles;
}
public Set<Role> getRoles() {
return roles;
}
Hibernate一对多(多对一)外键设置汇总的更多相关文章
- Django---图书管理系统,一对多(外键设置),__str__和__repr__的区别,进阶版项目说明简介.模版语言if ... else ..endif
Django---图书管理系统,一对多(外键设置),__str__和__repr__的区别,进阶版项目说明简介.模版语言if ... else ..endif 一丶__str__ 和 __repr__ ...
- 测试脚本配置、ORM必知必会13条、双下划线查询、一对多外键关系、多对多外键关系、多表查询
测试脚本配置 ''' 当你只是想测试django中的某一个文件内容 那么你可以不用书写前后端交互的形式而是直接写一个测试脚本即可 脚本代码无论是写在应用下的test.py还是单独开设py文件都可以 ' ...
- 六 Hibernate多表操作&级联&外键维护
Hibernate的一对多关联映射 Hibernate的多对多关联映射 数据库表与表之间的关系:一对多,多对多,一对一 一对多:一个部门对应多个员工,一个员工只能属于一个部门.一个客户对应多个联系人, ...
- Python sqlalchemy orm 多对多外键关联
多对多外键关联 注:使用三张表进行对应关联 实现代码: # 创建3个表 配置外键关联 # 调用Column创建字段 加类型 from sqlalchemy import Table, Column, ...
- Django框架表关系外键-多对多外键(增删改查)-正反向的概率-多表查询(子查询与联表查询)
目录 一:表关系外键 1.提前创建表关系 2.目前只剩 书籍表和 书籍作者表没创建信息. 3.增 4.删 5.修改 二:多对多外键增删改查 1.给书籍绑定作者 2.删 3.修改 4.清空 三:正反向的 ...
- Mysql 外键设置
MySql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给 ...
- Mysql外键设置中的CASCADE、NO ACTION、RESTRICT、SET NULL
转: Mysql外键设置中的CASCADE.NO ACTION.RESTRICT.SET NULL 2017年06月11日 10:03:13 雅静8 阅读数:5491 版权声明:本文为博主原创文章 ...
- django开发中关于外键设置
django开发中关于外键设置 我们建模型的时候会用到ForeignKey 而由于外键的约数会导致一些保存 所有我们ctrl+左键进入源码 源码 def __init__(self, to, on_d ...
- Hibernate一对多(多对一)关联关系
上一篇博文总结了 Hibernate 的一对一的关联关系, 包括基于主键的单向一对一, 基于外键的单向一对一, 基于外键的双向一对一. 下面咱们说一下 Hibernate 的一对多关联关系. 其实一对 ...
随机推荐
- 18 JavaScript字符串方法
indexOf():从头到尾进行检索.返回指定文本在字符串最后一次出现的索引,否则返回-1.可以指定第二个参数作为起始位置. lastIndexOf:从尾到头进行检索.返回指定文本最后出现的位置,否则 ...
- 迭代器对象numpy.nditer在数组上进行迭代——修改数组的值
nditer对象有另一个可选参数op_flags,默认情况下,nditer将视待迭代遍历的数组为只读对象(read-only),为了在遍历数组的同时,实现对数组元素值得修改,必须指定op_flags= ...
- spark脑图
spark脑图:
- 【PAT甲级】1041 Be Unique (20 分)(多重集)
题意: 输入一个正整数N(<=1e5),接下来输入N个正整数.输出第一个独特的数(N个数中没有第二个和他相等的),如果没有这样的数就输出"None". AAAAAccepte ...
- C — 小知识
老是记错int与void*之间的转换,所以记录一个,顺便用一下一些宏.预处理... int与void*的转换.打印变量名: #include <stdio.h> // 打印变量名 #def ...
- VS release模式下进行调试设置
工程项目上右键 打开 属性界面 1.c++ --- 常规 ---- 调试信息格式 选 程序数据库(/Zi)或(/ZI), 注意:如果是库的话,只能(Zi) 2.c/c++ ---- 优化 ---- ...
- icos_snake_port-to-port_configuration
Topo: # $language = "Python" # $interface = "1.0"# Author:Bing# Date:6/21/2017# ...
- css height VS min-height
height:容器高度固定(值是百分比时除外): min-height:容器高度小于该值时取该值,大于该值时按实际的值.应用:页面中页脚置底.
- eclipse问题集合
[eclipse更换jdk版本]
- Python 基础之模块之math random time
一:math 数学模块import math#(1)ceil() 向上取整操作 (对比内置round)res = math.ceil(6.001) #注意精度损耗print(res)#(2)floo ...