@ElementCollection 组件集合映射

 

问题描述:

一个人有家庭住址,也有单位地址;但是“地址”并不能失去人的存在而存在,所以是一个失去独立性的Pojo;

所以地址不能映射为一个实体,这时就需要映射为组件,及人的信息里边包含地址。是整体与部分的关系。

但由于这个地址可能有多个。比如公司地址、出生地址、家庭地址等。所以要使用Map,这样可以存储多个不同的

地址。key表明是什么地址;而value就是对应的这个地址。如何映射呢?

 

 

 

hibernate生成的建表语句:

 

CREATE TABLE `person` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(255) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

 

 

 

CREATE TABLE `person_address` (

  `Person_id` int(11) NOT NULL,

  `a` varchar(255) DEFAULT NULL,

  `b` varchar(255) DEFAULT NULL,

  `c` varchar(255) DEFAULT NULL,

  `address_KEY` varchar(255) NOT NULL DEFAULT '',

  PRIMARY KEY (`Person_id`,`address_KEY`),

  KEY `FKE83F852A356FEAE3` (`Person_id`),

  CONSTRAINT `FKE83F852A356FEAE3` FOREIGN KEY (`Person_id`) REFERENCES `person` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

 

反向工程图例:

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值