`
默默的小熊
  • 浏览: 232747 次
社区版块
存档分类
最新评论

建立多对一关系

 
阅读更多

      在数据库设计中,很多实体之前并不是简单的一对一关系。有些可能是多对一,多对多关系。下面的文章中以常见的客户订单之间的关系为例,介绍在hibernate中,如果去配置多对一的关系。

      1. 实体分析

     客户和订单之间是一对多的关系,或者说订单和客户之间是多对一的关系。按照上面的思想,可以设计出两种方式的类关系。

//方式一
public class Customer{
    private long id;
    private String name;
    private Set<Order> orders;
}

public class Order{
    private long id;
}

//方式二
public class Customer{
    private long id;
    private String name;
}

public class Order{
    private long id;
    private Set<Customer>customers;
}

     方式一方式二这样设计都是可以的,但是想想数据库sql语句怎么写呢?

create table order(
    id int not null;
    custom_id int not null;
    primary key (id);
);

create table customer(
    id int not null;
    name varchar(30) ;
    primary key (id);
);

     可以看到方式二这种创建类的方法,更接近数据库表的结构。

     2. hibernate的配置

   

//对于客户实体是很简单,类就只有id和name属性,表也只有id和name字段,直接
//简单的映射一下就行。
//而对于订单而言,类和数据库表中的id字段是可以做简单的对应的。但是customer_id
//这个字段就不好对应了。因为在类中是Customer对象,而在数据库表中是int型的外键

 

//对于上面的情况,使用many-to-one元素来做映射。
<many-to-one
    name="customer" //类中的属性
    column="customer_id" //表中的字段
    class="mypack.Customer" //在Order类中,customer的类
    not-null="true" //hibernate在存储订单的时候,会先检查customer属性是否为空
    lazy="false"//表示hibernate在加载Order对象时,会立即加载与他想关联的Customer对象
/>

 

     

分享到:
评论

相关推荐

    关于关系型数据库基本知识(主键、外键、一对一、一对多、多对一等).docx

    多对一关系是从一对多的另一个角度看,如员工表中的部门ID可以是部门表的外键,形成多对一的关联。 最后,多对多关系表示一个表中的记录可以对应另一表中的多个记录,反之亦然。这通常通过中间表来实现,如学生和...

    access建立表之间的关系

    1. **一对一关系(One-to-One)**:在这种关系中,表A的每条记录都与表B的一条记录相对应,反之亦然。这种关系比较少见,但当两个实体之间存在一对一的对应关系时,会使用这种关联。 2. **一对多关系(One-to-Many...

    EJB3一对多和多对一关系映射实例

    通过这种方式,我们可以在数据库中建立一对多或多对一的关系。在查询时,可以直接通过部门获取所有员工,或者通过员工查询其所在部门。 总结:EJB3的ORM特性大大简化了Java EE应用中的数据操作。`@OneToMany`和`@...

    多边形拓扑关系的建立

    在地理信息系统(GIS)中,多边形拓扑关系的建立是至关重要的一个环节,它涉及到数据的组织、空间分析以及地图制图等多个方面。本文将深入探讨如何使用MFC(Microsoft Foundation Classes)库来实现这个功能,以及从...

    结合经验谈谈在心理咨询中应如何建立良好的帮助关系.pdf

    由于给定文件中【部分内容】并未提供具体的内容,因此无法提供针对特定文本内容的知识点生成。但是根据标题和描述,我们可以推测文档内容是关于如何在...希望这些知识点能够对您理解心理咨询中的帮助关系建立有所帮助。

    客户关系管理之客户关系的建立与维护.pptx

    客户关系的建立与维护涉及多个方面,包括对客户的认知、选择、开发、维护、以及在关系破裂时的恢复。 **客户关系的定义**: 客户关系指的是企业与客户之间相互作用、相互影响的状态,涵盖了两者之间的联系、互动和...

    如何建立良好的人际关系.ppt

    第五题到第十四题涉及了适应性、求助行为、反馈接受度、朋友选择标准、异性交往方式以及对朋友隐私的态度等多方面。这些题目旨在揭示个人在处理冲突、批评、帮助请求以及维护人际关系网时的策略和原则。 最后,得分...

    java学习--多对多,一对多关系(学校与学生,学生与课程)

    在这个例子中,`Enrollment`类充当了连接`Student`和`Course`的桥梁,允许它们之间建立多对多关系。 实现这些关系时,我们还可以利用Java的框架,如Hibernate,它支持对象关系映射(ORM),能够自动处理数据库的...

    sql建立一对多或多对多关系.txt

    -- teacher表id,name student表id,name,tid -- 如果要显示教师列表并且显示每个教师的学生,如果不建立类的一对多/多对多,可以尝试该sql

    sql关系图建立详解

    通过学习 SQL 关系图的建立,可以加深对数据库设计的理解,熟悉视图的操作,并提高数据库设计和开发的效率。 7.1 SQL Server 2005 关系图数据库关系图 SQL Server 2005 关系图数据库关系图是一种图形化的数据库...

    以学生为中心,在心理咨询中与学生建立良好的帮助关系.pdf

    以学生为中心的咨询方式强调以学生的需要、感受和能力为出发点,咨询师通过有效的沟通技巧、同理心以及专业的辅导策略与学生建立起一种支持性的、相互信任的关系。 1. 了解学生需求:以学生为中心的心理咨询首先...

    hibernate 一对一 多对多的关系

    例如,在处理上述的一对一和多对多关系时,Hibernate会根据注解自动处理关联的建立和删除。通过阅读源码,你可以了解这些过程的细节,这对于优化性能和解决复杂问题非常有帮助。 至于**工具应用**,Hibernate提供了...

    建立良好人际关系的原则与应用.pptx

    【建立良好人际关系的原则与应用】 ...总之,建立良好人际关系是一个持续的过程,涉及到自我认知、沟通技巧和情感管理等多个方面。通过学习和实践,我们可以提升人际交往能力,进而促进个人的全面发展和社会适应性。

    客户关系管理——客户关系的建立与维护(第2版).rar

    《客户关系管理——客户关系的建立与维护》第二版是一本深入探讨企业如何有效地管理和维护客户关系的专业书籍。作为一本配套教学资源包,它旨在为学习者提供丰富的实践案例、理论解析以及实用策略,帮助他们理解和...

    家庭教育中如何建立良好的亲子关系

    在家庭教育中,如何建立良好的亲子关系是一个涉及教育学、心理学、家庭社会学以及个人成长等多个领域的问题。良好的亲子关系不仅对孩子的性格发展、情感表达和社交能力有积极影响,也是家庭教育能否取得成功的关键。...

    数据结构课程设计(家族关系查询系统).pdf

    1. 建立家族关系树:在这一模块中,设计者需要创建一个数据结构来表示家族成员之间的层次关系。由于家谱具有树状的特性,不适合使用线性表来表示,因此选择树结构更为恰当。这里采用的是三叉链表来实现树状结构,每...

    ArcGIS-某地区地块的拓扑关系建立-实验报告.docx

    这一过程需要确保数据集之间具有一致的坐标系统,以便正确地建立拓扑关系。 4. **添加子类型**:为了更好地管理和区分数据,可以在要素类中定义不同的子类型。例如,根据地块的用途或属性来分类。 5. **新建拓扑...

    Access中如何建立外键关系

    - 在“表/查询”下拉菜单中选择`Student`表,然后在“字段”列表中选择`StudentID`,确保“关系类型”设置为“一对一”或“一对多”(取决于你的具体需求),并勾选“实施参照完整性的”选项。 - 重复上述步骤,为...

    Hibernate关联关系(一对多)

    ### Hibernate关联关系(一对多) #### 一、概念与背景 在软件开发中,尤其是在数据库设计及ORM(对象关系映射)技术的应用中,“一对多”关系是非常常见的一种数据关联方式。例如,一个班级可以拥有多个学生,但每...

Global site tag (gtag.js) - Google Analytics