我打算在角色表(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. Euler Sums系列(四)

    \[\Large\displaystyle \sum_{n=1}^\infty (-1)^n \frac{H_n}{2n+1}=\mathbf{G}-\frac{\pi}{2}\ln(2)\] \(\ ...

  2. netty代理http&https请求

    (1)关键代码 package test; import java.security.cert.CertificateException; import javax.net.ssl.SSLExcept ...

  3. 当在命令行中执行virtualenv venv时报此错误:'utf-8' codec can't decode byte 0xd5 in position 38: invalid continuation by

    1.windows中安装虚拟环境virtualenv时, 当在命令行中执行virtualenv venv时报此错误:'utf-8' codec can't decode byte 0xd5 in po ...

  4. Spring Boot Security JWT 整合实现前后端分离认证示例

    前面两章节我们介绍了 Spring Boot Security 快速入门 和 Spring Boot JWT 快速入门,本章节使用 JWT 和 Spring Boot Security 构件一个前后端 ...

  5. Java基础知识笔记第十章:输入输出流

    File类 文件的属性 目录 文件的创建与删除 运行可执行文件 文件字节输入流 文件字节输出流 文件字符输入输出流 缓冲流 随机流 数组流 数据流 对象流 序列化与对象克隆 使用Scanner解析文件 ...

  6. B: 最小代价

    B: 最小代价 题解:先用最小生成树求联通所有点的最小代价ans 在求度为1的时候权值最大的点mx ans-mx就是答案 #include<iostream> #include<al ...

  7. Java基础 -4.3

    While循环结构 while循环 public static void main(String[] args) { while(布尔表达式) { 条件满足时执行; 修改循环条件; } } do wh ...

  8. swoole 监控文件改动

    <?php /** * 场景: * 进程监控文件改动 */ date_default_timezone_set('PRC'); echo '进程id:' . posix_getpid() . P ...

  9. spring mvc web应用启动时就执行特定处理(线程启动)

    package com.sdt.platform.index.controller; import java.net.URL; import java.util.List; import java.u ...

  10. ImageSwitcher和GridView的案例开发

    (一)ImageSwitcher之手机相册的滑动查看 首先在布局文件上加一个ImageSwitcher,设置它的宽度和高度为match_parent. 在主程序中:首先设置一个存储照片资源的数组,在设 ...