zoukankan      html  css  js  c++  java
  • Hibernate注解:一对多外键关联

    情形:两个表,cms_mode是主表,cms_model_field是子表,cms_model_field的model_id字段关联到cms_model的主键。

    #
    # Source for table cms_model
    #
    
    DROP TABLE IF EXISTS `cms_model`;
    CREATE TABLE `cms_model` (
      `model_id` int(11) NOT NULL,
      `name` varchar(50) NOT NULL DEFAULT '',
      `title` varchar(100) NOT NULL DEFAULT '' COMMENT '名称',
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='CMS模型表';
    
    #
    # Source for table cms_model_field
    #
    
    DROP TABLE IF EXISTS `cms_model_field`;
    CREATE TABLE `cms_model_field` (
      `field_id` int(11) NOT NULL AUTO_INCREMENT,
      `model_id` int(11) NOT NULL DEFAULT '0' COMMENT '模型ID',
      `name` varchar(50) DEFAULT NULL COMMENT '名称',
      `title` varchar(250) NOT NULL DEFAULT '' COMMENT '标题',
      `priority` int(11) NOT NULL DEFAULT '0' COMMENT '权重',
      `data_type` char(1) NOT NULL DEFAULT '1' COMMENT '数据类型(S-字符,N-数值,D-日期,T-备注)',
      `is_reserved` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否保留',
      PRIMARY KEY (`field_id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='CMS模型字段表';;

    CmsModel.java:

    @Entity
    @Table(name = "cms_model")
    @SuppressWarnings("serial")
    public class CmsModel implements Serializable
    { 
        @Id
        @GeneratedValue
        @Column(name = "model_id")
        private Integer id;
        
        @Column(name = "name")
        private String name;
        
        @Column(name = "title")
        private String title;
        
        @OneToMany(mappedBy = "model", 
                fetch = FetchType.LAZY)
        private List<CmsModelField> fieldList;
    }

    CmsModelField.java:

    @Entity
    @Table(name = "cms_model_field")
    @SuppressWarnings("serial")
    public class CmsModelField implements Serializable
    { 
        @Id
        @GeneratedValue
        @Column(name = "field_id")
        private Integer id;
        
        @Column(name = "name")
        private String name;
        
        @Column(name = "title")
        private String title;
        
        @Column(name = "data_type")
        private String dataType;
        
        @Column(name = "priority")
        private Integer priority;
        
        @Column(name = "is_reserved")
        private Boolean reserved;
        
        @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumn(name = "model_id")
        private CmsModel model;
    }

    @OneToMany Default: FetchType.LAZY默认是延迟抓取,不需要左联接。如果是FetchType.EAGER即时抓取,就会是左联接查询。
    @ManyToOne Default: FetchType.EAGER默认是即时抓取,做连接。如果fetch=FetchType.LAZY不是左联接,在需要One的时候直接select。

  • 相关阅读:
    BeautifulSoup
    requests
    安装xpath helper
    取消搜狗输入法的快捷键
    numpy初识 old
    Jupyter Notebook 快捷键
    安装numpy、matplotlib
    JavaScript 继承 -JavaScript高级程序设计
    mac /windows
    unicode 地址
  • 原文地址:https://www.cnblogs.com/eastson/p/3994157.html
Copyright © 2011-2022 走看看