`
卒子99
  • 浏览: 73690 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于两个实体发生关联产生新的属性

XML 
阅读更多

两个实体发生关联,并产生新的属性,比如订单和产品,直接发生关系,会产生数量这个属性。这个时候有两种方式解决:

1)把订单项设置成为order的一个组合元素,如使用List

public class Order extends BaseObject {

 /**
  * 定单编号
  */
 protected String orderSN;

 /**
  * 下订时间
  */
 protected Date orderTime;

.............................................

 /**
  * 订单项
  */
 protected List orderItem = new ArrayList();

..................................................................//省略其它属性

}

OrderItem.java

 */
public class OrderItem extends BaseObject {
 /**
  * 产品
  */
 protected Product product;

 /**
  * 产品数量
  */
 protected Integer quantity;

...................................//省略其它属性

}

这样就建立了两个实体的联系,再看配置文件Order.hbm.xml中关于List的配置

<list name="orderItem" table="line_itme" inverse="false" optimistic-lock="true" lazy="true"></list>

xml 代码
  1. <list name="orderItem" table="line_itme" lazy="true" inverse="false" optimistic-lock="true">  
  2.    <key column="order_id" />  
  3.    <index column="item_number" />  
  4.       
  5.    <composite-element class="com.us.ebuy.model.OrderItem">  
  6.     <property name="quantity" />  
  7.     <property name="productTotal"/>  
  8.     <many-to-one name="product" column="product_id" outer-join="true"/>  
  9.    </composite-element>  
  10.   </list>  
  11.   

<many-to-one name="product" column="product_id" outer-join="true"></many-to-one>note:invser=false,表明OrderItem的添加,更新,删除操作均要通过Order来完成

<key column="order_id"></key>

xml 代码
  1. <key column="order_id" />  
  2. <index column="item_number" />  


<index column="item_number"></index>
这两项配置确实一条item记录,其中key元素对应Order的Key,而index是一个序号,和List中的get(int index)相对应,从0开始。

对orderItem的操作:

插入和更新可以按一般的方法处理,就不多说了

删除方法:

java 代码
  1. List list = tOrder.getOrderItem();   
  2. Vector vector = new Vector(id.length);   
  3. for (int i = 0; i < id.length; i++) {   
  4.  vector.add(list.get(Integer.parseInt(id[i])));   
  5. }   
  6. list.removeAll(vector);  

只有通过集合方式删除,如果按序号删除,每删除一个序号会变化(我想应该是这样子的),我测试过,那种删除不会成功的。

2)第二种方法是把OrderItem则单独提出来,成为一个独立的实体,和一般的many-to-one一样处理

这样做的好处就在对OrderItem操作的时候就不用老跟Order打交道了。当然在面向对象的设计上来看,就觉得怪怪的,反正灵活使用,就OK了

分享到:
评论

相关推荐

    PowerDesigner使用教程.doc

    1)数据结构表达为实体和属性; 2)数据操作表达为实体中的记录的插入、删除、修改、查询等操作; 3)完整性约束表达为数据的自身完整性约束(如数据类型、检查、规则等)和数据间的参照完整性约束(如联系、继承联系...

    Hibernate_Annotation关联映射

    通过关联表来保存两个实体之间的连接关系(要模拟一对一关联必须在每一个外键上添加唯一约束)。 1.共享主键的一对一关联映射: @Entity @Table(name="Test_Body") public class Body { private Integer id; ...

    学习情景2-数据库的设计.pptx

    ER图的组成元素 联系 多对多的联系(Many-to-Many) 如果一个实体A可以与多个(包含0个)实体B发生关系,而一个实体B也可以与多个(包含0个)实体A发生关系,则A与B两个实体之间具有多对多的联系,简单记为m:n。...

    史上最大规模1.4亿知识图谱数据下载,知识图谱,通用知识图谱,融合了两千五百多万的实体,拥有亿级别的实体属性关系。.zip

    在知识图谱中,实体作为节点,实体之间的各种语义关联则通过边进行连接,形成了一个庞大的数据网络。 知识图谱的核心价值在于其能够精确、直观地表示复杂世界中的知识,并支持高效的知识查询与推理。例如,在搜索...

    Entity Framework 6 Recipes(中文word翻译版)

    关于EF6的正式书籍很少,这个文章是国内翻译整理出来的,共46个小节。适合循序渐进的学习。 第1部分 开始使用实体框架之历史和框架简述 第2部分 开始使用实体框架之使用介绍 第3部分 实体数据建模基础之创建一个简单...

    delphi桥接模式

    耦合:两个实体的行为的某种强关联。 脱耦:将它们的强关联去掉,即消除耦合。 强关联:在编译时期已经确定的无法在运行时期动态改变的关联。 弱关联:可以动态的确定并且可以在运行时期动态改变的关联。 类的继承...

    SQL数据库设计.doc

    用E-R图表示: 2、 一对多:A实体可以与B实体任意数量的进行关联,B中的实体最多与A中的一个实体关联 。E-R图表示: 3、 多对一:A实体最多与一个B实体进行关联,而B实体可以和任意多个A实体进行关联。E- R图表示: ...

    绑定/约束 (binding)指两个东西之间的关联

    绑定/约束 (binding)指两个东西之间的关联。如 名字 与它所代表的事物。又如属性与实体之间的关联,又或者符号与操作之间的关联。

    SQLServer数据库设计.pdf

    ⽤E-R图表⽰: 2、 ⼀对多:A实体可以与B实体任意数量的进⾏关联,B中的实体最多与A中的⼀个实体关联。E-R图表⽰: 3、 多对⼀:A实体最多与⼀个B实体进⾏关联,⽽B实体可以和任意多个A实体进⾏关联。E-R图表⽰: 4...

    人力资源管理系统数据库设计与实现.doc

    一、人事管理 1、人事档案信息管理 图一 员工基本信息与员工单位信息 分析说明:上图为人事档案信息对员工信息进行的记录,其中包含两个实体员工实 体和员工单位信息实体。 (1)员工实体 员工实体信息中,给出了本...

    数据库系统基础知识.doc

    码: 一个实体的各属性中,可以唯一标识实体的属性,这个属性可以是一个,也可以是多个 。 域:属性的取值范围。 实体集:用同一类实体的实体名和属性名抽象和刻画同一类实体。 联系:在现实世界中,事物内部及事物...

    Hibernate注释大全收藏

    在特定的实体关联属性上使用 @Embeddable 和 @AttributeOverride 注解可以覆盖该属性对应的嵌入式对象的列映射。 @Entity public class Person implements Serializable { // Persistent component using defaults...

    贴片机控制系统的数据库设计.docx

    此外,PCB基本信息实体,除了本体的信息外,还管理着元件信息、PCB板Mark点信息这两个实体信息,通过这三个实体来实现对PCB的信息化管理;供料器和吸嘴实体,也各自拥有自己的一般属性及相关信息,篇幅所限,这里就...

    大数据整理——数据集成.pdf

    因此,在数据集成的最终环节中,实体融合旨在消除不同数据源之间同⼀个实体属性值的冲突,将不同的数据信息进⾏综合,从⽽提取出统 ⼀、丰富、⾼精度的数据。实体融合的主要⽅法包括基于规则的⽆监督学习、结合标注...

    类和类之间的依赖、关联、聚合、组合关系

    抽象原则包括过程抽象和数据抽象两个方面。 过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。 数据抽象是根据施加于数据之...

    SQLServer2017安装包

    SQL SERVER 2017 提供了图形... 节点表示实体 (例如,一个人或组织),边缘表示连接 (如组件或好友) 的两个节点之间的关系。 节点和边缘可能具有与之关联的属性。总的来说,图形数据库就是存储实体与关系的数据库。

    领域驱动核心概念总结

    有两个实体,如果唯一标识不一样,那么即便实体的其他所有属性都一样,我们也认为他们两个不同的实体;因为实体有生命周期,实体从被创建后可能会被持久化到数据库,然后某个时候又会被取出来。所以,如果我们不为...

    人脸识别对抗系统——数据库设计心得.pdf

    ⽐如 有两个主键,不能存在这样的属性,它只依赖于其中⼀个主键,这就是不符合第⼆范式。 如果存在不符合第⼆范式的情况,那么这个属性和主关键字的这⼀部分应该分离出来形成⼀个新的实体,新实体与原实体之间是⼀对...

Global site tag (gtag.js) - Google Analytics