我打算在角色表(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一对多(多对一)外键设置汇总的更多相关文章

  1. Django---图书管理系统,一对多(外键设置),__str__和__repr__的区别,进阶版项目说明简介.模版语言if ... else ..endif

    Django---图书管理系统,一对多(外键设置),__str__和__repr__的区别,进阶版项目说明简介.模版语言if ... else ..endif 一丶__str__ 和 __repr__ ...

  2. 测试脚本配置、ORM必知必会13条、双下划线查询、一对多外键关系、多对多外键关系、多表查询

    测试脚本配置 ''' 当你只是想测试django中的某一个文件内容 那么你可以不用书写前后端交互的形式而是直接写一个测试脚本即可 脚本代码无论是写在应用下的test.py还是单独开设py文件都可以 ' ...

  3. 六 Hibernate多表操作&级联&外键维护

    Hibernate的一对多关联映射 Hibernate的多对多关联映射 数据库表与表之间的关系:一对多,多对多,一对一 一对多:一个部门对应多个员工,一个员工只能属于一个部门.一个客户对应多个联系人, ...

  4. Python sqlalchemy orm 多对多外键关联

    多对多外键关联 注:使用三张表进行对应关联 实现代码: # 创建3个表 配置外键关联 # 调用Column创建字段 加类型 from sqlalchemy import Table, Column, ...

  5. Django框架表关系外键-多对多外键(增删改查)-正反向的概率-多表查询(子查询与联表查询)

    目录 一:表关系外键 1.提前创建表关系 2.目前只剩 书籍表和 书籍作者表没创建信息. 3.增 4.删 5.修改 二:多对多外键增删改查 1.给书籍绑定作者 2.删 3.修改 4.清空 三:正反向的 ...

  6. Mysql 外键设置

    MySql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个:    一个是让数据库自己通过外键来保证数据的完整性和一致性    一个就是能够增加ER图的可读性    有些人认为外键的建立会给 ...

  7. Mysql外键设置中的CASCADE、NO ACTION、RESTRICT、SET NULL

    转: Mysql外键设置中的CASCADE.NO ACTION.RESTRICT.SET NULL 2017年06月11日 10:03:13 雅静8 阅读数:5491   版权声明:本文为博主原创文章 ...

  8. django开发中关于外键设置

    django开发中关于外键设置 我们建模型的时候会用到ForeignKey 而由于外键的约数会导致一些保存 所有我们ctrl+左键进入源码 源码 def __init__(self, to, on_d ...

  9. Hibernate一对多(多对一)关联关系

    上一篇博文总结了 Hibernate 的一对一的关联关系, 包括基于主键的单向一对一, 基于外键的单向一对一, 基于外键的双向一对一. 下面咱们说一下 Hibernate 的一对多关联关系. 其实一对 ...

随机推荐

  1. techiediaries网站的Laravel 6系列教程

    Laravel 6 Tutorial & New Features - Build a CRM [PART 1] Laravel 6 REST API CRUD Tutorial - Buil ...

  2. Android 短信模块分析(七) MMS数据库定义及结构整理

    一. mmssms.db 数据库mmssms.db中表的定义见表4.1至4.18所示: 表4.1 addr(彩信地址) 字段名 类型 描述 备注 _id INTEGER PRIMARY_KEY 主键I ...

  3. Linux kali安装或更新之后出现乱码

    打开终端,输入以下命令,之后重启. apt-get install ttf-wqy-zenhei

  4. leetCode练题——12. Integer to Roman

    1.题目 12. Integer to Roman Roman numerals are represented by seven different symbols: I, V, X, L, C,  ...

  5. 1146. Snapshot Array

    Implement a SnapshotArray that supports the following interface: SnapshotArray(int length) initializ ...

  6. 如何安装部署和优化Tomcat?(Tomcat部署和优化与压测,虚拟主机配置,Tomcat处理请求的过程)

    文章目录 前言 一:Tomcat安装部署 1.1:Tomcat简介 1.2:Tomcat核心组件 1.3:Tomcat处理请求的过程 1.3.1:请求过程基本解释 1.3.2:请求过程详细解释 1.4 ...

  7. 投资人分享答疑----HHR计划----以太直播课第三课

    分享大纲:(祥峰投资) 一,投资人会看什么: 1,赛道定位:“生意”还是“独角兽-to be”? 2,如何退出?上市还是收购? 3,  团队能力,愿景力 4,壁垒:数据和价值 5,价格 二,融资需要准 ...

  8. A - Bi-shoe and Phi-shoe 素数打表

    A - Bi-shoe and Phi-shoe Bamboo Pole-vault is a massively popular sport in Xzhiland. And Master Phi- ...

  9. 【原】python异步学习

    https://www.liaoxuefeng.com/wiki/1016959663602400/1017959540289152 https://www.jianshu.com/p/b5e347b ...

  10. spring boot中扩展spring mvc 源码分析

    首先,确认你是对spring boot的自动配置相关机制是有了解的,如果不了解请看我spring boot相关的源码分析. 通常的使用方法是继承自org.springframework.boot.au ...