Hibernate关联管理配置表

发表于:2015-10-10 12:52

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:执念ydq    来源:51Testing软件测试网采编

  用hibernate开发时,建好主表后发现有一些配置属性需要添加,而有不想更改主表结构,这是只需要建一个配置表,在主表的model配置中配置上配置表的key和value就行,如:
  主表:CREATE TABLE `SKILL_GROUP` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `SKILL_GROUP` varchar(36) NOT NULL,
  `TYPE` int(11) NOT NULL,
  `WORK_END_TIME` varchar(10) DEFAULT NULL,
  `WORK_START_TIME` varchar(10) DEFAULT NULL,
  `SP_ID` varchar(36) DEFAULT NULL,
  `USER_ID` int(11) DEFAULT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `SP_ID` (`SP_ID`),
  KEY `FK508C0AD1AA67812B` (`SP_ID`),
  KEY `FK508C0AD11DD0822B` (`USER_ID`)
  ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;
  配置表: CREATE TABLE `SKILL_CONFIGURATION` (
  `CONFIG_KEY` varchar(36) NOT NULL,
  `CONFIG_VALUE` varchar(36) NOT NULL,
  `SKILL_GROUP_ID` int(11) NOT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  在主表的model中配置上(TskillGroup):
  private Map<String, String> configMap = new HashMap<String, String>();  //与技能组相关的配置,用map存储
  @ElementCollection(fetch=FetchType.EAGER)
  @MapKeyColumn(name = "CONFIG_KEY")     //配置属性的key值
  @Column(name = "CONFIG_VALUE", length = 290)   //配置属性的值
  @CollectionTable(name = "SKILL_CONFIGURATION",  //配置表表名
  joinColumns = @JoinColumn(name = "SKILL_GROUP_ID"))  //存放主表的主键
  public Map<String, String> getConfigMap() {
  return configMap;
  }
  public void setConfigMap(Map<String, String> configMap) {
  this.configMap = configMap;
  }
  在对对象TskillGroup进行增删改查时,用以下方法同步配置表属性:
  TskillGroup tsg = new TskillGroup();
  ......把对象属性set进去
  添加对象:skillGroupDao.save(tsg);
  同步配置属性表数据:tsg.getConfigMap().put(配置属性的key,配置属性值 );
  修改对象:TskillGroup tsg = skillGroupDao.get(TskillGroup.class, skillGroup.getId());
  .....把新修改的值set到对象中
  同步配置属性表数据:tsg.getConfigMap().put(配置属性的key,配置属性更新的值 );
  删除对象:TskillGroup tsg = skillGroupDao.get(TskillGroup.class, sgId);
  删除此对象对应的所有配置属性:tsg.getConfigMap().clear();
  查询对象:List<TskillGroup> l = skillGroupDao.find(hql, params);
  循环list得到TskillGroup对象tsg
  查出tsg对象对应的配置属性:tsg.getConfigMap().get(配置属性的key)
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号