第一种方式: 先创建模型 再生成数据库的方法;
1、创建模型类,如用户类(User) 和 组类(Group),创建类中拥有的变量,并生成get和set方法。
manytoone:在多的一端创建一的一端的引用,例如在User中创建private Group group;
2、配置*.hbm.xml Group的映射中只需要配置对应字段即可,另外需要重命名下,因为group是sql中的关键字,在影射中
按提示键选择table 定义新的名称,如“t_group”等。
3、配置用户端的映射,配置拥有的字段即可,注意的一点是id的<generator class="native"/> 设置为native。
native是sql中的id自增。
然后设置<many-to-one name="group" column="groupid" cascade="all"/> name中的值是User中引用的一的一端的变量,
column中的值是生成到数据库后的列名,这里可以不输入,默认的名字会为name的名字,因为name的名字是group和sql的
关键字冲突,所以要指定column。
* cascade是级联的意思,它有4个属性:all、delete、none、save-update。all只对增查改生效,如果删除的话会抛异常
none是无操作、delete则是删除。
4、然后生成到数据库 具体生成到数据库的类代码如下:
Configuration config = new Configuration().configure();
SchemaExport export = new SchemaExport(config);
export.create(true, true);
5、然后创建测试类,代码如下:
如果在user.hbm.xml中不指定cascade的话 下面会抛出异常,有两种方法可以解决;
* 第一:在user.hbm.xml中指定cascade;
* 第二:Group group = new Group();
group.setName("系统管理员");
//在这里先把创建出来的group保存一下 session.save(group) 即可;
session.beginTransaction();
Group group = new Group();
group.setName("系统管理员");
User user = new User();
user.setName("Vurtne");
user.setGroup(group);
User user1 = new User();
user1.setName("Neilyo");
user1.setGroup(group);
session.save(user);
session.save(user1);
session.getTransaction().commit();
//这是先创建领域模型的方法,一般这种方法较为常用。
第二种方法:这种是先创建数据库然后在创建模型,这种方法较为少用,但要了解要会用。这种方法和上面方法的区别在于 “外键”是在数据库中设定的。其它的都大同小异。
在数据库中设置外键的方法如下:
打开数据库在表名上点右键选择编辑数据库,然后找到Foreign Keys-按“+”增加外键,名字可以自定。ondelete是级联触发的意思,一般我们选择cascade,然后在右边
Table处选择要关联的表的id即可例如 a表的id 到 b表的id。
注:以上是两种方法,比较推荐使用第一种方法。
分享到:
相关推荐
在IT行业中,"One2Many"通常指的是数据库关系模型中的一种关系类型,即一对一到多对多的关系。这种关系在数据库设计中非常常见,尤其是在处理实体间存在依赖或关联的数据时。Mybatis,一个流行的Java持久层框架,...
其中,many2one是一种常见的关系类型,用于表示数据库表之间的多对一关联。 ### Hibernate many2one 关系详解 #### 1. 概念解释 在Hibernate中,`many2one`关系表示多个实体可以与单个实体关联。例如,在一个学校...
### Hibernate Many-to-One (多对一) 及 Cascade (级联) #### 一、Many-to-One(多对一) 在数据库设计中,实体之间的关系主要包括一对一、一对多、多对多等几种类型。而在ORM(对象关系映射)框架Hibernate中,...
一、一对一(one-to-one)与一对多(one-to-many)关系 1. 一对一关系: 在现实世界中,如一个人只有一个身份证,这就是典型的"一对一"关系。在Hibernate中,可以通过@OneToOne注解实现。这种关系通常需要使用外键...
在Java的持久化框架Hibernate中,One-to-Many映射是一种常见的关系映射方式,它表示一个实体(比如一个用户)可以与多个其他实体(比如用户...理解并熟练掌握这些内容,将有助于你在实际项目中高效地处理多对一的关系。
} // 可选,表示多对一关系 } ``` 使用Fluent NHibernate配置一对多关系,则可以更直观地写出代码: ```csharp public class UserMap : ClassMap<User> { public UserMap() { Id(x => x.Id); // ...其他映射.....
标题中的“hibernate_1700_one2many_many2one_bi_crud(5)”指的是一项关于Hibernate框架的教程,重点在于介绍一对多(One-to-Many)和多对一(Many-to-One)双向关联关系的创建、读取、更新和删除(CRUD)操作。...
本话题主要探讨两种基本的关系映射类型:many-to-one(多对一)和one-to-many(一对多)。这两种关系映射是数据库中常见的关联类型,理解和掌握它们对于开发高质量的Java应用至关重要。 1. many-to-one关系 many-to...
在Java的持久化框架Hibernate中,"Many-to-One"关系是一种常见的关联映射类型,它表示一个实体(类)可以与多个其他实体实例相关联。在这个主题中,我们将深入探讨Hibernate如何处理这种关系,以及如何在实际编程中...
many2many单选按钮
在这个"Many2One"例子中,我们将探讨如何在Mybatis中实现多对一的关系映射。 在关系型数据库中,多对一(ManyToOne)关系表示一个实体(例如,学生)可以与多个其他实体(例如,班级)关联,但一个实体(班级)可以...
标题"Hibernate one to many(many to one) 配置"涉及到的是关系型数据库在Java中的持久化框架Hibernate中的两种关联映射关系:一对一(One-to-One)和多对一(Many-to-One)。在数据库设计中,这种关系很常见,例如...
在本案例 "Mybaits-one2many" 中,我们将探讨如何实现一对多的关系查询,并且通过实践来理解这种映射关系。 首先,我们需要了解一对多关系的基本概念。在数据库设计中,如果一个表(如用户表)的某一行可以与另一个...
hibernate中many2one案例,通过映射文件和domain对象自动生成数据库,使用的数据库是mysql,大家可以下载看看
本实例将详细讲解如何在Hibernate中实现Many-to-One关系映射,这是一种常见的数据库关联,表示一个实体可以与多个其他实体相关联。 在Many-to-One关系中,通常一个实体(如部门)可以有多个相关实体(如员工),而...
在数据库设计中,多对一(Many-to-One)关系是指一个实体可以与多个另一个实体相对应,而另一个实体只能与一个该实体相对应。例如,在新闻系统中,新闻(News)与栏目(Category)的关系就是典型的多对一关系:每个...
在数据库设计中,Many to One是一种常见的关系,即一个实体(表)可以与多个其他实体相关联,而另一个实体则只与一个实体相关联。 首先,我们需要理解Hibernate的实体类和映射文件。实体类是Java对象,它们代表...
本程序包含: hibenate 上传图片,二进制数据,大文本,集合映射的多种关系,onetoone,ontomany,manytomany等关系详细代码示例以及注释,全部由本人测试通过,对理解hibernate配置有极大帮助。
2. **一对多+多对一组合**:将多对多关系分解为两个一对多关系,一个对象包含另一对象的集合,而另一个对象则包含指向该集合的引用。 3. **collection 标签的使用**:在 ResultMap 中使用 collection 标签,同时...
针对one2many中many部分的记录,自定义删除条件控制,不符合条件的记录行后面将不显示删除图标。