zoukankan      html  css  js  c++  java
  • hibernate(七)组件映射与多对一映射

    一、组件映射

    用注解配置组件映射:

    Husband为我们映射的类,wife是这个类的一部分(属性不能与husband中属性重名,不要写Entity注解,不要有主键)

    Husband类:(在getWife()方法上添加注解@Embedded)

    package cn.orlion.hibernate.model;
    
    import javax.persistence.Embedded;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    
    @Entity
    public class Husband {
        
        private int id;
        
        private String name;
        
        private Wife wife;
        
        @Id
        @GeneratedValue
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        @Embedded
        public Wife getWife() {
            return wife;
        }
    
        public void setWife(Wife wife) {
            this.wife = wife;
        }
    }

    wife类:

    package cn.orlion.hibernate.model;
    
    public class Wife {
        
        private String wifename;
    
        public String getWifename() {
            return wifename;
        }
    
        public void setWifename(String wifename) {
            this.wifename = wifename;
        }
    
    }

    建表语句:

    create table Husband (
            id integer not null auto_increment,
            name varchar(255),
            wifename varchar(255),
            primary key (id)
        )

    二、多对一映射

    1、多对一单向映射

    注解方式配置:(一个组有多个用户,每个用户对应一个组,user是多的一方,group是一)

    Group类:

    package cn.orlion.hibernate.model;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Table;
    /*
     * 一个组有多个用户,每个用户对应一个组,user是多的一方,group是一
     */
    @Entity
    @Table(name="t_group")
    public class Group {
    
        private int id;
        
        private String name;
        @Id
        @GeneratedValue
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }

    User类:

    package cn.orlion.hibernate.model;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.ManyToOne;
    import javax.persistence.Table;
    
    @Entity
    @Table(name="t_user")
    public class User {
    
        private int id;
        
        private String name;
        
        private Group group;
        @Id
        @GeneratedValue
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        @ManyToOne
        public Group getGroup() {
            return group;
        }
    
        public void setGroup(Group group) {
            this.group = group;
        }
    }

    hibernate生成的sql:

    create table t_group (
            id integer not null auto_increment,
            name varchar(255),
            primary key (id)
        )
    
    create table t_user (
            id integer not null auto_increment,
            name varchar(255),
            group_id integer,
            primary key (id)
        )
    
    alter table t_user 
            add constraint FK_e5f24mh6aryt9hsy99oydps6g 
            foreign key (group_id) 
            references t_group (id)
  • 相关阅读:
    MVC的各个部分都有那些技术来实现?如何实现?
    spring入门学习
    动态 SQL 及安全性(Birt vs 润乾)
    报表的 SQL 植入风险及规避方法
    web 如何实现精准打印
    birt 报表与润乾报表对比
    ireport 与润乾报表对比
    银行存折套打续打功能 -- 报表如何记录上次打印的位置
    脚本中如何做填报数据校验
    鼠标悬停出现提示信息怎么做
  • 原文地址:https://www.cnblogs.com/orlion/p/5071349.html
Copyright © 2011-2022 走看看