zoukankan      html  css  js  c++  java
  • hibernate之关于一对多单向关联映射


    【hibernate】之关于一对多单向关联映射


    基于外键的一对多关联映射!

    一对多,Group(组)对于Person(人),一个组能够有多个人!ok?

    Hibernate主要有两种配置方法。一种是Annotations 一种是XML


    以下是Annotations的配置方法!

    @Entity
    @Table(name="t_group")
    publicclass Group {
        private Integer id;
        private String name;
        private Set<Person> persons=newHashSet<Person>();//set不同意反复,最适合数据库模型
        @Id
        @GeneratedValue
        public Integer getId() {
           returnid;
        }
        publicvoid setId(Integerid) {
           this.id = id;
        }
        @Column(name="t_name")
        public String getName() {
           returnname;
        }
        publicvoid setName(Stringname) {
           this.name = name;
        }
        @OneToMany
         //加上@JoinColumn是为了防止Hibernate将一对多当做多对多来处理,产生中间表
        @JoinColumn(name="group_id")
        public Set<Person>getPersons() {
           returnpersons;
        }
        publicvoidsetPersons(Set<Person> persons){
           this.persons = persons;
        }
    }

    @Entity
    @Table(name="t_person")
    publicclass Person {
        private Integer id;
        private String name;
        private Integer age;
        @Id
        @GeneratedValue
        public Integer getId() {
           returnid;
        }
        publicvoid setId(Integerid) {
           this.id = id;
        }
        @Column(name="t_name")
        public String getName() {
           returnname;
        }
        publicvoid setName(Stringname) {
           this.name = name;
        }
        @Column(name="t_age")
        public Integer getAge() {
           returnage;
        }
        publicvoid setAge(Integerage) {
           this.age = age;
        }
    }

    XML配置一对多的单向关联映射
    publicclass Person {
        private Integer id;
        private String name;
        private Integer age;
        public Integer getId() {
           returnid;
        }
        publicvoid setId(Integerid) {
           this.id = id;
        }
        public String getName() {
           returnname;
        }
        publicvoid setName(Stringname) {
           this.name = name;
        }
        public Integer getAge() {
           returnage;
        }
        publicvoid setAge(Integerage) {
           this.age = age;
        }
    }

    publicclass Group {
        private Integer id;
        private String name;
        private Set<Person> persons=newHashSet<Person>();//set不同意反复,最适合数据库模型
        public Integer getId() {
           returnid;
        }
        publicvoid setId(Integerid) {
           this.id = id;
        }
        public String getName() {
           returnname;
        }
        publicvoid setName(Stringname) {
           this.name = name;
        }
        public Set<Person>getPersons() {
           returnpersons;
        }
        publicvoidsetPersons(Set<Person> persons) {
           this.persons = persons;
        }
    }

    <?

    xml version="1.0"?

    > <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="csg.hibernate.entity"> <class name="Group"table="t_group"> <id name="id"> <column name="id"/> <generator class="native" /> </id> <property name="name" /> <set name="persons"> <key column="group_id"/> <one-to-many class="csg.hibernate.entity.Person"/> </set> </class> </hibernate-mapping>


    <?

    xml version="1.0"?

    > <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="csg.hibernate.entity"> <class name="Person"table="t_person"> <id name="id"> <column name="id"/> <generator class="native" /> </id> <property name="name" /> <property name="age" /> </class> </hibernate-mapping>



    Ok,一对多单向关联映射的Annotations和XML配置方法!



  • 相关阅读:
    Flask-SQLAlchemy 学习总结
    ubuntu安装redis
    PostgreSQL在Ubuntu上安装指南
    Linux(Ubuntu)下MySQL的安装与配置
    python wechat_sdk间接性的出现错误OfficialAPIError: 40001,说access_token已过期或者不是最新的。
    django不要设置datetime字段auto_now=True
    python 装饰器和 functools 模块
    关于 Python Iterator 协议的一点思考
    python中的enumerate函数
    8 种常被忽视的 SQL 错误用法
  • 原文地址:https://www.cnblogs.com/llguanli/p/8943380.html
Copyright © 2011-2022 走看看