2.有类似如下树形结构:
    中国
     |_北京_海淀
     |    |_朝阳
     |    |_西城
     |
     |_上海_徐汇
          |_黄埔
要求:
(1)如上数据结构是一个在实际开发过程中经常遇到的问题,请你基于数据库设计出一个表存储结构,要求该存储结构能够通用,改变树形的内容(如换成家庭人员组成树)也可以存储;
(2)根据如上所建立存储结构,基于SSH框架实现改树形结构的还原;
(3)要求具有系统登录功能;

解决方案 »

  1.   


    JavaBean
    public class Location{
    private Long id;
    private String name;//名称
    private Privilege parent;//上级
    private Set<Location> children=new HashSet<Location>();//下级
    }hbm映射
    <class name="Location"> <id name="id" column="id">
    <generator class="native" />
    </id>
    <property name="name"></property>


    <!--parent Location与上级多对一  -->
    <many-to-one name="parent" class="Location" column="parentId"/>

    <!-- children 属性,Location对下级一对多 -->
    <set name="children"  order-by="id">
    <key column="parentId"></key>
    <one-to-many class="Location"/>
    </set>
    </class>



    CREATE TABLE `Location` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) DEFAULT NULL,
      `parentId` bigint(20) DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `FK196D1691B7709E09` (`parentId`),
      CONSTRAINT `FK196D1691B7709E09` FOREIGN KEY (`parentId`) REFERENCES `Location` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8; id name parentId三个字段   parentId作为外键引用自己的主键id
      

  2.   

    参考吧:
    CREATE TABLE `sys_menu` (
       `id` bigint(20) NOT NULL auto_increment COMMENT '编号',
       `parent_id` bigint(20) NOT NULL COMMENT '父级编号',
       `parent_ids` varchar(255) NOT NULL COMMENT '所有父级编号',
       `name` varchar(100) NOT NULL COMMENT '菜单名称',
       `href` varchar(255) default NULL COMMENT '链接',
       `target` varchar(20) default NULL COMMENT '目标(mainFrame、 _blank、_self、_parent、_top)',
       `icon` varchar(100) default NULL COMMENT '图标',
       `sort` int(11) NOT NULL COMMENT '排序(升序)',
       `is_show` char(1) NOT NULL COMMENT '是否在菜单中显示(1:显示;0:不显示)',
       `permission` varchar(200) default NULL COMMENT '权限标识',
       `create_by` bigint(20) default NULL COMMENT '创建者',
       `create_date` datetime default NULL COMMENT '创建时间',
       `update_by` bigint(20) default NULL COMMENT '更新者',
       `update_date` datetime default NULL COMMENT '更新时间',
       `res` varchar(255) default NULL COMMENT '备注信息',
       `del_flag` char(1) NOT NULL default '0' COMMENT '删除标记(0:正常;1:删除)',
       PRIMARY KEY  (`id`),
       KEY `sys_menu_parent_id` (`parent_id`),
       KEY `sys_menu_parent_ids` (`parent_ids`),
       KEY `sys_menu_del_flag` (`del_flag`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='菜单表'