码迷,mamicode.com
首页 > Web开发 > 详细

hibernate关联管理配置表

时间:2015-09-18 11:43:01      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

用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)

hibernate关联管理配置表

标签:

原文地址:http://www.cnblogs.com/yaodq/p/4817274.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!