Hibernate一对多(多对一)外键设置汇总

简介:   我打算在角色表(role)中添加一个帐号表(account)的外键(accountId),步骤如下: 1、首先在角色表(role)中添加列。          添加语句:alter table role add(accountid varchar2(50));          添加语句时注意事项:单词之间的空格必须为英文空格,不可为中文空格;accountId添加后不可         设为主键! 2、将accountId这一列设为外键,链接角色表(role)和帐号表(account)。

 

我打算在角色表(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;
       }

目录
相关文章
|
Java 数据库连接 API
解锁高效开发秘籍:深入探究 Hibernate 如何优雅处理一对多与多对多关系,让数据映射再无烦恼!
【9月更文挑战第3天】Hibernate 是 Java 领域中最流行的 ORM 框架之一,广泛用于处理实体对象与数据库表之间的映射。尤其在处理复杂关系如一对多和多对多时,Hibernate 提供了丰富的 API 和配置选项。本文通过具体代码示例,展示如何使用 `@OneToMany`、`@JoinColumn`、`@ManyToMany` 和 `@JoinTable` 等注解优雅地实现这些关系,帮助开发者保持代码简洁的同时确保数据一致性。
254 4
|
前端开发 Java 数据库连接
程序技术好文:电脑睡眠(sleep)和休眠(Hibernate)的区别,以及休眠功能的设置
程序技术好文:电脑睡眠(sleep)和休眠(Hibernate)的区别,以及休眠功能的设置
|
前端开发 Java 数据库连接
技术好文共享:电脑睡眠(sleep)和休眠(Hibernate)的区别,以及休眠功能的设置
技术好文共享:电脑睡眠(sleep)和休眠(Hibernate)的区别,以及休眠功能的设置
|
SQL XML Java
Hibernate - 单向多对一关联关系映射
Hibernate - 单向多对一关联关系映射
83 0
|
Java 数据库连接
hibernate一对多关系操作
hibernate一对多关系操作
214 1
hibernate一对多关系操作
|
SQL XML Java
Hibernate框架【四】——基本映射——多对一和一对多映射
Hibernate框架【四】——基本映射——多对一和一对多映射
339 0
|
XML Java 数据库连接
《Hibernate上课笔记》------class6------Hibernate实现一对多关联映射
《Hibernate上课笔记》------class6------Hibernate实现一对多关联映射
124 0
《Hibernate上课笔记》------class6------Hibernate实现一对多关联映射
|
XML Java 关系型数据库
hibernate里面的一对多关系映射
hibernate里面的一对多关系映射
156 0
|
存储 Java 数据库连接
【框架】[Hibernate]利用Hibernate进行一对多的级联操作-Web实例
【框架】[Hibernate]利用Hibernate进行一对多的级联操作-Web实例
234 0
【框架】[Hibernate]利用Hibernate进行一对多的级联操作-Web实例
|
SQL 缓存 Java
框架分析(9)-Hibernate
框架分析(9)-Hibernate

热门文章

最新文章